Skip to content
Snippets Groups Projects
Commit 9f3eb93e authored by Jonathan Wakely's avatar Jonathan Wakely
Browse files

libstdc++: Use if-constexpr in std::__try_use_facet [PR113099]

As noted in the PR, we can use if-constexpr for the explicit
instantantiation definitions that are compiled with -std=gnu++11. We
just need to disable the -Wc++17-extensions diagnostics.

libstdc++-v3/ChangeLog:

	PR libstdc++/113099
	* include/bits/locale_classes.tcc (__try_use_facet): Use
	if-constexpr for C++11 and up.
parent b8faf1fc
No related branches found
No related tags found
No related merge requests found
......@@ -87,6 +87,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__s2.data(), __s2.data() + __s2.length()) < 0);
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wc++17-extensions"
template<typename _Facet>
inline const _Facet*
__try_use_facet(const locale& __loc) _GLIBCXX_NOTHROW
......@@ -97,7 +99,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// We know these standard facets are always installed in every locale
// so dynamic_cast always succeeds, just use static_cast instead.
#define _GLIBCXX_STD_FACET(...) \
if _GLIBCXX17_CONSTEXPR (__is_same(_Facet, __VA_ARGS__)) \
if _GLIBCXX_CONSTEXPR (__is_same(_Facet, __VA_ARGS__)) \
return static_cast<const _Facet*>(__facets[__i])
_GLIBCXX_STD_FACET(ctype<char>);
......@@ -145,6 +147,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return static_cast<const _Facet*>(__facets[__i]);
#endif
}
#pragma GCC diagnostic pop
/**
* @brief Test for the presence of a facet.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment