1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // (C) Copyright John Maddock 2001.
- // (C) Copyright Aleksey Gurtovoy 2003.
- // (C) Copyright Alisdair Meredith 2006.
- // 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/libs/config for most recent version.
- // MACRO: BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
- // TITLE: template specialisations of function types
- // DESCRIPTION: If the compiler cannot handle template specialisations
- // for function types
- namespace boost_no_function_type_specializations{
- template< typename T > struct is_function
- {
- };
- struct X {};
- enum Y { value };
- // Tesst can declare specializations
- typedef is_function< int( int ) > scalar_types;
- typedef is_function< X( X ) > user_defined_type;
- typedef is_function< int( Y ) > check_enum;
- typedef is_function< X( X, int ) > multiple_arguments;
- // Partial specialization test
- // confirm const, volatile, pointers and references in args
- template< typename X, typename Y, typename Z >
- struct is_function< X( Y const &, volatile Z * ) >
- {
- };
- int test()
- {
- return 0;
- }
- }
|