mirror of
https://github.com/boostorg/core.git
synced 2026-01-19 04:02:18 +00:00
The rename allows to avoid forming an infinite recursion in compile time (because of noexcept specification that needs to resolve the unqualified call to swap) or run time (in case if the boost::swap function is the only one suitable for the passed arguments). To avoid the compile-time recursion, removed noexcept specification from boost::swap. The specification is still present in boost::core::invoke_swap. Deprecated boost::swap and associated headers. boost::core::invoke_swap is defined in a new boost/core/invoke_swap.hpp header. Updated docs and tests. Removed tests that check inclusion of deprecated headers. Fixes https://github.com/boostorg/core/issues/148.
34 lines
1.0 KiB
C++
34 lines
1.0 KiB
C++
// Copyright (c) 2008 Joseph Gauterin, Niels Dekker
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
// Tests swapping std::time_base::dateorder objects by means of boost::core::invoke_swap.
|
|
// std::time_base::dateorder is an enumerated type. It does not have an
|
|
// std::swap overload or template specialization.
|
|
|
|
#include <boost/core/invoke_swap.hpp>
|
|
#include <boost/core/lightweight_test.hpp>
|
|
#define BOOST_CHECK BOOST_TEST
|
|
#define BOOST_CHECK_EQUAL BOOST_TEST_EQ
|
|
|
|
#include <locale>
|
|
|
|
int main()
|
|
{
|
|
const std::time_base::dateorder initial_value1 = std::time_base::dmy;
|
|
const std::time_base::dateorder initial_value2 = std::time_base::mdy;
|
|
|
|
std::time_base::dateorder object1 = initial_value1;
|
|
std::time_base::dateorder object2 = initial_value2;
|
|
|
|
boost::core::invoke_swap(object1,object2);
|
|
|
|
BOOST_CHECK_EQUAL(object1,initial_value2);
|
|
BOOST_CHECK_EQUAL(object2,initial_value1);
|
|
|
|
return boost::report_errors();
|
|
}
|
|
|