06351de064
[SVN r36547]
45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
// (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;
|
|
}
|
|
|
|
}
|