Commit 5221242f authored by Daniela Engert's avatar Daniela Engert Committed by Victor Zverovich

Instruct msvc to report the _true_ value in `__cplusplus` and force _full_ C++ conformance

 * do this  in _some_ tests to improve test coverage and catch possible problems due to that
 * fix invalid export of `static constexpr` constant
 * fix msvc warnings about unreachable code in high warning levels
parent 31a5f0d3
......@@ -2656,21 +2656,28 @@ constexpr auto get_arg_index_by_name(basic_string_view<Char> name) -> int {
if constexpr (detail::is_statically_named_arg<T>()) {
if (name == T::name) return N;
}
if constexpr (sizeof...(Args) > 0)
if constexpr (sizeof...(Args) > 0) {
return get_arg_index_by_name<N + 1, Args...>(name);
(void)name; // Workaround an MSVC bug about "unused" parameter.
return invalid_arg_index;
} else {
(void)name; // Workaround an MSVC bug about "unused" parameter.
return invalid_arg_index;
}
}
#endif
template <typename... Args, typename Char>
FMT_CONSTEXPR auto get_arg_index_by_name(basic_string_view<Char> name) -> int {
#if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS
if constexpr (sizeof...(Args) > 0)
if constexpr (sizeof...(Args) > 0) {
return get_arg_index_by_name<0, Args...>(name);
#endif
} else {
(void)name;
return invalid_arg_index;
}
#else
(void)name;
return invalid_arg_index;
#endif
}
template <typename Char, typename ErrorHandler, typename... Args>
......
......@@ -394,7 +394,7 @@ struct ostream_params {
FMT_END_DETAIL_NAMESPACE
static constexpr detail::buffer_size buffer_size;
constexpr detail::buffer_size buffer_size;
/** A fast output stream which is not thread-safe. */
class FMT_API ostream final : private detail::buffer<char> {
......
......@@ -99,8 +99,10 @@ if (FMT_CAN_MODULE)
add_fmt_test(module-test MODULE)
if (MSVC)
target_compile_options(test-module PRIVATE /utf-8)
target_compile_options(module-test PRIVATE /utf-8)
target_compile_options(test-module PRIVATE /utf-8 /Zc:__cplusplus
/Zc:externConstexpr /Zc:inline)
target_compile_options(module-test PRIVATE /utf-8 /Zc:__cplusplus
/Zc:externConstexpr /Zc:inline)
endif ()
endif ()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment