//----------------------------------------------------------------------------- // boost-libs variant/test/variant_swap_test.cpp source file // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // // Copyright (c) 2009 ArtVPS Ltd. // Copyright (c) 2013 Antony Polukhin. // // 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) #include "boost/test/minimal.hpp" #include "boost/variant.hpp" #include #include void run1() { using boost::variant; typedef variant< int, std::vector* > t_var; std::vector vec; t_var v0(23), v1(&vec); BOOST_REQUIRE(v0.which() == 0); BOOST_REQUIRE(v1.which() == 1); swap(v0, v1); BOOST_CHECK(v0.which() == 1); BOOST_CHECK(v1.which() == 0); } void run2() { using boost::variant; using std::swap; typedef variant< std::vector, std::vector > t_var; std::vector vec1; std::vector vec2; t_var v0(vec1), v1(vec2); BOOST_REQUIRE(v0.which() == 0); BOOST_REQUIRE(v1.which() == 1); swap(v0, v1); BOOST_CHECK(v0.which() == 1); BOOST_CHECK(v1.which() == 0); v0.swap(v1); BOOST_CHECK(v0.which() == 0); BOOST_CHECK(v1.which() == 1); } void run3() { using boost::variant; using std::swap; typedef variant< int, double > t_var; t_var v0(1), v1(2.0); BOOST_REQUIRE(v0.which() == 0); BOOST_REQUIRE(v1.which() == 1); swap(v0, v1); BOOST_CHECK(v0.which() == 1); BOOST_CHECK(v1.which() == 0); v0.swap(v1); BOOST_CHECK(v0.which() == 0); BOOST_CHECK(v1.which() == 1); } int test_main(int , char* []) { run1(); run2(); run3(); return 0; }