5959d6bce2
[SVN r20372]
63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
// (C) Copyright John Maddock 2002.
|
|
// 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_MEMBER_FUNCTION_SPECIALIZATIONS
|
|
// TITLE: Specialisation of individual member functions.
|
|
// DESCRIPTION: Verify that specializations of individual members
|
|
// of template classes work OK.
|
|
|
|
|
|
namespace boost_no_member_function_specializations{
|
|
|
|
|
|
template<class T>
|
|
class foo
|
|
{
|
|
public:
|
|
foo();
|
|
foo(const T&);
|
|
~foo();
|
|
int bar();
|
|
};
|
|
|
|
// declare specialisations:
|
|
template<> foo<int>::foo();
|
|
template<> foo<int>::foo(const int&);
|
|
template<> foo<int>::~foo();
|
|
template<> int foo<int>::bar();
|
|
|
|
// provide defaults:
|
|
template<class T> foo<T>::foo(){}
|
|
template<class T> foo<T>::foo(const T&){}
|
|
template<class T> foo<T>::~foo(){}
|
|
template<class T> int foo<T>::bar(){ return 0; }
|
|
|
|
// provide defs:
|
|
template<> foo<int>::foo(){}
|
|
template<> foo<int>::foo(const int&){}
|
|
template<> foo<int>::~foo(){}
|
|
template<> int foo<int>::bar(){ return 1; }
|
|
|
|
|
|
int test()
|
|
{
|
|
foo<double> f1;
|
|
foo<int> f2;
|
|
f1.bar();
|
|
f2.bar();
|
|
return 0;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|