disable ability to stream user defined types if not at least c++11

This commit is contained in:
Nicolas Fauvet 2017-01-19 13:54:25 +01:00
parent e7503fc7a2
commit d747cc1c3d
2 changed files with 7 additions and 0 deletions

View File

@ -116,6 +116,7 @@ void format_arg(BasicFormatter<Char, ArgFormatter> &f,
FMT_API void print(std::ostream &os, CStringRef format_str, ArgList args);
FMT_VARIADIC(void, print, std::ostream &, CStringRef)
#if __cplusplus >= 201103L
template<typename T, typename Char>
typename std::enable_if<
!std::is_same<
@ -139,6 +140,7 @@ operator<<(BasicWriter<Char> &writer, const T &value) {
buffer.resize(buffer.size() + format_buf.size());
return writer;
}
#endif
} // namespace fmt
#ifdef FMT_HEADER_ONLY

View File

@ -111,7 +111,10 @@ std::ostream &operator<<(std::ostream &os, EmptyTest) {
return os << "";
}
#if __cplusplus >= 201103L
struct UserDefinedTest { int i = 42; };
#endif
std::ostream &operator<<(std::ostream &os, const UserDefinedTest &u) {
return os << u.i;
}
@ -134,6 +137,7 @@ TEST(OStreamTest, WriteToOStream) {
EXPECT_EQ("foo", os.str());
}
#if __cplusplus >= 201103L
TEST(OStreamTest, WriteUserDefinedTypeToOStream) {
std::ostringstream os;
fmt::MemoryWriter w;
@ -142,6 +146,7 @@ TEST(OStreamTest, WriteUserDefinedTypeToOStream) {
fmt::internal::write(os, w);
EXPECT_EQ("The answer is 42", os.str());
}
#endif
TEST(OStreamTest, WriteToOStreamMaxSize) {
std::size_t max_size = std::numeric_limits<std::size_t>::max();