1 2 // Copyright Aleksey Gurtovoy 2000-2004 3 // 4 // Distributed under the Boost Software License, Version 1.0. 5 // (See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt) 7 // 8 // See http://www.boost.org/libs/mpl for documentation. 9 10 // $Id$ 11 // $Date$ 12 // $Revision$ 13 14 #include <boost/mpl/aux_/config/msvc.hpp> 15 #include <boost/mpl/aux_/config/workaround.hpp> 16 17 #if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) 18 19 #include <boost/mpl/aux_/msvc_is_class.hpp> 20 #include <boost/mpl/aux_/test.hpp> 21 22 template< typename T > struct A { T x[0]; }; 23 MPL_TEST_CASE()24MPL_TEST_CASE() 25 { 26 MPL_ASSERT_NOT(( aux::msvc_is_class< int > )); 27 MPL_ASSERT_NOT(( aux::msvc_is_class< char > )); 28 MPL_ASSERT_NOT(( aux::msvc_is_class< enum_ > )); 29 MPL_ASSERT_NOT(( aux::msvc_is_class< char* > )); 30 MPL_ASSERT_NOT(( aux::msvc_is_class< UDT* > )); 31 MPL_ASSERT_NOT(( aux::msvc_is_class< UDT& > )); 32 MPL_ASSERT_NOT(( aux::msvc_is_class< incomplete* > )); 33 MPL_ASSERT_NOT(( aux::msvc_is_class< incomplete& > )); 34 MPL_ASSERT_NOT(( aux::msvc_is_class< int[5] > )); 35 MPL_ASSERT_NOT(( aux::msvc_is_class< void (*)() > )); 36 MPL_ASSERT_NOT(( aux::msvc_is_class< int (*)(int, char) > )); 37 38 MPL_ASSERT(( aux::msvc_is_class< UDT > )); 39 MPL_ASSERT(( aux::msvc_is_class< incomplete > )); 40 MPL_ASSERT(( aux::msvc_is_class< abstract > )); 41 MPL_ASSERT(( aux::msvc_is_class< noncopyable > )); 42 MPL_ASSERT(( aux::msvc_is_class< A<int> > )); 43 MPL_ASSERT(( aux::msvc_is_class< A<incomplete> > )); 44 } 45 46 #endif 47