diff options
-rw-r--r-- | libadhocutil/compileTimeFormatter.h | 8 | ||||
-rw-r--r-- | libadhocutil/unittests/testCompileTimeFormatter.cpp | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/libadhocutil/compileTimeFormatter.h b/libadhocutil/compileTimeFormatter.h index 2fc193e..35dffde 100644 --- a/libadhocutil/compileTimeFormatter.h +++ b/libadhocutil/compileTimeFormatter.h @@ -190,11 +190,11 @@ namespace AdHoc { // As far as I know, only clang/llvm version 5+ can compile this // so long as std=c++17 #if __clang_major__ >= 5 && __cplusplus >= 201703 -#define scprintf(strm, fmt, ...) \ - ([&strm]() -> decltype(strm) & { \ - static constexpr const char * const __FMT = fmt; \ +#define scprintf(strmp, fmt, ...) \ + ([](decltype(strmp) & strm) -> auto & { \ + static constexpr auto __FMT = fmt; \ return ::AdHoc::Formatter<__FMT>::write(strm, __VA_ARGS__); \ - }()) + }(strmp)) #endif #endif diff --git a/libadhocutil/unittests/testCompileTimeFormatter.cpp b/libadhocutil/unittests/testCompileTimeFormatter.cpp index b966078..9bb81f6 100644 --- a/libadhocutil/unittests/testCompileTimeFormatter.cpp +++ b/libadhocutil/unittests/testCompileTimeFormatter.cpp @@ -450,10 +450,10 @@ BOOST_AUTO_TEST_CASE(smartptr) #ifdef scprintf BOOST_AUTO_TEST_CASE(scprintf) { - std::stringstream str; - auto & strret = scprintf(str, "Some literal format string (%d, %c).", 0, 'f'); - BOOST_CHECK_EQUAL(&str, &strret); // We got back our original stream - BOOST_CHECK_EQUAL(str.str(), "Some literal format string (0, f)."); + auto str = std::make_unique<std::stringstream>(); + auto & strret = scprintf(*str, "Some literal format string (%d, %c).", 0, 'f'); + BOOST_CHECK_EQUAL(str.get(), &strret); // We got back our original stream + BOOST_CHECK_EQUAL(str->str(), "Some literal format string (0, f)."); } #endif |