libs/static_assert/static_assert_test_fail_6.cpp
// (C) Copyright Steve Cleary & John Maddock 2000. // Use, modification and distribution are 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) // See http://www.boost.org for most recent version including documentation. #include <boost/static_assert.hpp> // // all these tests should fail: // // Template class scope template <class Int, class Char> struct Bill { private: // can be in private, to avoid namespace pollution BOOST_STATIC_ASSERT(sizeof(Int) == 4); //BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Char)); // should not compile when instantiated public: // Template member function scope: provides access to member variables Int x; Char c; template <class Int2, class Char2> void f(Int2 , Char2 ) { BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Int2)); BOOST_STATIC_ASSERT(sizeof(Char) == sizeof(Char2)); BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Char)); // should not compile when instantiated } }; void foo() { int i = 0; char c = 0; Bill<int, char> b; // this should fail: b.f(i, c); }







