From 415d389c59a367f9ca067ec2202c8c0fe1c414f9 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 1 Sep 2025 02:41:03 +0300 Subject: [PATCH] Disable constexpr for GCC 5 in string_generator --- include/boost/uuid/string_generator.hpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/include/boost/uuid/string_generator.hpp b/include/boost/uuid/string_generator.hpp index cd78f24..4b60138 100644 --- a/include/boost/uuid/string_generator.hpp +++ b/include/boost/uuid/string_generator.hpp @@ -9,12 +9,19 @@ #include #include #include +#include #include #include #include #include #include +#if BOOST_WORKAROUND(BOOST_GCC, < 60000) +# define BOOST_UUID_CXX14_CONSTEXPR +#else +# define BOOST_UUID_CXX14_CONSTEXPR BOOST_CXX14_CONSTEXPR +#endif + namespace boost { namespace uuids { @@ -57,7 +64,7 @@ private: template typename std::iterator_traits::value_type - BOOST_CXX14_CONSTEXPR get_next_char( CharIterator& begin, CharIterator end, int& ipos ) const + BOOST_UUID_CXX14_CONSTEXPR get_next_char( CharIterator& begin, CharIterator end, int& ipos ) const { if( begin == end ) { @@ -73,7 +80,7 @@ public: using result_type = uuid; template - BOOST_CXX14_CONSTEXPR uuid operator()( CharIterator begin, CharIterator end ) const + BOOST_UUID_CXX14_CONSTEXPR uuid operator()( CharIterator begin, CharIterator end ) const { using char_type = typename std::iterator_traits::value_type; @@ -156,17 +163,17 @@ public: } template - BOOST_CXX14_CONSTEXPR uuid operator()( std::basic_string const& s ) const + BOOST_UUID_CXX14_CONSTEXPR uuid operator()( std::basic_string const& s ) const { return operator()( s.begin(), s.end() ); } - BOOST_CXX14_CONSTEXPR uuid operator()( char const* s ) const + BOOST_UUID_CXX14_CONSTEXPR uuid operator()( char const* s ) const { return operator()( s, s + detail::cx_strlen( s ) ); } - BOOST_CXX14_CONSTEXPR uuid operator()( wchar_t const* s ) const + BOOST_UUID_CXX14_CONSTEXPR uuid operator()( wchar_t const* s ) const { return operator()( s, s + detail::cx_strlen( s ) ); } @@ -181,7 +188,7 @@ private: BOOST_THROW_EXCEPTION( std::runtime_error( std::string( "Invalid UUID string at position " ) + buffer + ": " + error ) ); } - BOOST_CXX14_CONSTEXPR unsigned char get_value( char c, int ipos ) const + BOOST_UUID_CXX14_CONSTEXPR unsigned char get_value( char c, int ipos ) const { constexpr char digits[] = "0123456789abcdefABCDEF"; constexpr std::size_t digits_len = sizeof(digits) / sizeof(char) - 1; @@ -199,7 +206,7 @@ private: return values[ pos - digits ]; } - BOOST_CXX14_CONSTEXPR unsigned char get_value( wchar_t c, int ipos ) const + BOOST_UUID_CXX14_CONSTEXPR unsigned char get_value( wchar_t c, int ipos ) const { constexpr wchar_t digits[] = L"0123456789abcdefABCDEF"; constexpr std::size_t digits_len = sizeof(digits) / sizeof(wchar_t) - 1; @@ -250,4 +257,6 @@ private: }} // namespace boost::uuids +#undef BOOST_UUID_CXX14_CONSTEXPR + #endif // BOOST_UUID_STRING_GENERATOR_HPP_INCLUDED