1 /* tests using std::get on boost:array 2 * (C) Copyright Marshall Clow 2012 3 * Distributed under the Boost Software License, Version 1.0. (See 4 * accompanying file LICENSE_1_0.txt or copy at 5 * http://www.boost.org/LICENSE_1_0.txt) 6 */ 7 8 #include <boost/array.hpp> 9 #include <boost/static_assert.hpp> 10 11 12 #include <string> 13 #include <iostream> 14 #include <algorithm> 15 #ifndef BOOST_NO_CXX11_HDR_ARRAY 16 #include <array> 17 #endif 18 19 #include <boost/core/lightweight_test_trait.hpp> 20 21 namespace { 22 23 #ifndef BOOST_NO_CXX11_HDR_ARRAY 24 template< class T > RunStdTests()25 void RunStdTests() 26 { 27 typedef boost::array< T, 5 > test_type; 28 typedef T arr[5]; 29 test_type test_case; // = { 1, 1, 2, 3, 5 }; 30 31 T &aRef = std::get<5> ( test_case ); // should fail to compile 32 BOOST_TEST ( &*test_case.begin () == &aRef ); 33 } 34 #endif 35 36 } 37 main()38int main() 39 { 40 #ifndef BOOST_NO_CXX11_HDR_ARRAY 41 RunStdTests< bool >(); 42 RunStdTests< void * >(); 43 RunStdTests< long double >(); 44 RunStdTests< std::string >(); 45 #else 46 BOOST_STATIC_ASSERT ( false ); // fail on C++03 systems. 47 #endif 48 49 return boost::report_errors(); 50 } 51