// (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 foo { public: foo(); foo(const T&); ~foo(); int bar(); }; // declare specialisations: template<> foo::foo(); template<> foo::foo(const int&); template<> foo::~foo(); template<> int foo::bar(); // provide defaults: template foo::foo(){} template foo::foo(const T&){} template foo::~foo(){} template int foo::bar(){ return 0; } // provide defs: template<> foo::foo(){} template<> foo::foo(const int&){} template<> foo::~foo(){} template<> int foo::bar(){ return 1; } int test() { foo f1; foo f2; f1.bar(); f2.bar(); return 0; } }