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