mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Boost.Range library
 | |
| //
 | |
| //  Copyright Neil Groves 2014. Use, modification and
 | |
| //  distribution is subject to 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)
 | |
| //
 | |
| // For more information, see http://www.boost.org/libs/range/
 | |
| //
 | |
| 
 | |
| #include <boost/detail/workaround.hpp>
 | |
| 
 | |
| #include <boost/range/iterator_range.hpp>
 | |
| #include <boost/range/functions.hpp>
 | |
| #include <boost/range/as_literal.hpp>
 | |
| #include <boost/variant.hpp>
 | |
| #include <boost/mpl/vector.hpp>
 | |
| #include <boost/test/test_tools.hpp>
 | |
| #include <boost/test/unit_test.hpp>
 | |
| #include <string>
 | |
| 
 | |
| namespace
 | |
| {
 | |
|     enum E
 | |
|     {
 | |
|         e1, e2, e3
 | |
|     };
 | |
| 
 | |
|     void test_variant_report()
 | |
|     {
 | |
|         typedef boost::mpl::vector<
 | |
|             E,
 | |
|             std::string,
 | |
|             boost::iterator_range<std::string::iterator>
 | |
|         >::type args;
 | |
| 
 | |
|         typedef boost::make_variant_over<args>::type variant_t;
 | |
| 
 | |
|         variant_t v;
 | |
|         std::string s;
 | |
|         v = boost::iterator_range<std::string::iterator>(s.begin(), s.end());
 | |
|         v = e2;
 | |
|         v = std::string();
 | |
| 
 | |
|         // Rationale:
 | |
|         // This is cast to const char* to guard against ambiguity in the case
 | |
|         // where std::string::iterator it a char*
 | |
|         v = static_cast<const char*>("");
 | |
|     }
 | |
| }
 | |
| 
 | |
| boost::unit_test::test_suite* init_unit_test_suite( int argc, char* argv[] )
 | |
| {
 | |
|     boost::unit_test::test_suite* test =
 | |
|         BOOST_TEST_SUITE("iterator range and variant interoperability");
 | |
| 
 | |
|     test->add(BOOST_TEST_CASE(&test_variant_report));
 | |
| 
 | |
|     return test;
 | |
| }
 |