aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/fmt.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil/fmt.hh')
-rw-r--r--src/libutil/fmt.hh13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/libutil/fmt.hh b/src/libutil/fmt.hh
index d015f7e5f..7589e51e2 100644
--- a/src/libutil/fmt.hh
+++ b/src/libutil/fmt.hh
@@ -3,7 +3,6 @@
#include <iostream>
#include <string>
-#include <optional>
#include <boost/format.hpp>
// Darwin and FreeBSD stdenv do not define _GNU_SOURCE but do have _Unwind_Backtrace.
#if __APPLE__ || __FreeBSD__
@@ -12,6 +11,9 @@
#include <boost/stacktrace.hpp>
#include "ansicolor.hh"
+// Explicit instantiation in fmt.cc
+extern template class boost::basic_format<char>;
+
namespace nix {
/**
@@ -157,7 +159,9 @@ public:
* Format the given string literally, without interpolating format
* placeholders.
*/
- HintFmt(const std::string & literal) : HintFmt("%s", Uncolored(literal)) {}
+ // Moved out of line because it was instantiating the template below in
+ // every file in the project.
+ HintFmt(const std::string & literal);
/**
* Interpolate the given arguments into the format string.
@@ -193,6 +197,11 @@ public:
}
};
+// Explicit instantiations in fmt.cc
+extern template HintFmt::HintFmt(const std::string &, const Uncolored<std::string> &s);
+extern template HintFmt::HintFmt(const std::string &, const std::string &s);
+extern template HintFmt::HintFmt(const std::string &, const uint64_t &, const char * const &);
+
std::ostream & operator<<(std::ostream & os, const HintFmt & hf);
}