1 // (C) Copyright Steve Cleary & John Maddock 2000. 2 // Use, modification and distribution are subject to the 3 // Boost Software License, Version 1.0. (See accompanying file 4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 // See http://www.boost.org for most recent version including documentation. 7 8 #include <boost/static_assert.hpp> 9 10 // 11 // all these tests should fail: 12 // 13 14 // Template class scope 15 template <class Int, class Char> 16 struct Bill 17 { 18 private: // can be in private, to avoid namespace pollution 19 BOOST_STATIC_ASSERT(sizeof(Int) == 4); 20 BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Char)); // should not compile when instantiated 21 public: 22 23 // Template member function scope: provides access to member variables 24 Int x; 25 Char c; 26 template <class Int2, class Char2> fBill27 void f(Int2 , Char2 ) 28 { 29 BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Int2)); 30 BOOST_STATIC_ASSERT(sizeof(Char) == sizeof(Char2)); 31 //BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Char)); // should not compile when instantiated 32 } 33 }; 34 35 Bill<int, char> b; 36 37 38 39 40