From 28d26d13f179c2bad8ab8dc7af5bd476ca2c7fad Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 18 Dec 2021 07:34:16 +0200 Subject: [PATCH] Add sv_common_reference_test --- test/Jamfile.v2 | 1 + test/sv_common_reference_test.cpp | 48 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 test/sv_common_reference_test.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2eedc2e..fe97758 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -306,6 +306,7 @@ run sv_lt_test.cpp ; run sv_stream_insert_test.cpp ; run sv_conversion_test.cpp ; run sv_conversion_test2.cpp : ; +run sv_common_reference_test.cpp ; run span_test.cpp ; run span_types_test.cpp ; diff --git a/test/sv_common_reference_test.cpp b/test/sv_common_reference_test.cpp new file mode 100644 index 0000000..998e0ae --- /dev/null +++ b/test/sv_common_reference_test.cpp @@ -0,0 +1,48 @@ +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include +#include + +#if BOOST_CXX_VERSION < 202000L + +BOOST_PRAGMA_MESSAGE( "Skipping test because BOOST_CXX_VERSION is " BOOST_STRINGIZE(BOOST_CXX_VERSION) ) +int main() {} + +#else + +#include + +#if !defined(__cpp_lib_concepts) + +BOOST_PRAGMA_MESSAGE( "Skipping test because __cpp_lib_concepts is not defined" ) +int main() {} + +#elif __cpp_lib_concepts < 201907L + +BOOST_PRAGMA_MESSAGE( "Skipping test because __cpp_lib_concepts is " BOOST_STRINGIZE(__cpp_lib_concepts) ) +int main() {} + +#else + +#include + +using T = std::common_reference_t< boost::core::string_view&&, std::string& >; + +static_assert( std::common_reference_with< boost::core::string_view&&, std::string& > ); +static_assert( std::common_reference_with< boost::core::wstring_view&&, std::wstring const& > ); + +int main() +{ + BOOST_TEST_TRAIT_SAME( std::common_reference_t< boost::core::string_view&&, std::string& >, boost::core::string_view ); + BOOST_TEST_TRAIT_SAME( std::common_reference_t< boost::core::wstring_view&&, std::wstring const& >, boost::core::wstring_view ); + + return boost::report_errors(); +} + +#endif +#endif