12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // (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);
- }
|