// (C) Copyright John Maddock 2001. // 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_TEMPLATE_KEYWORD // TITLE: member templates keyword // DESCRIPTION: Member template keyword not supported. namespace boost_no_member_template_keyword{ #ifndef BOOST_NO_MEMBER_TEMPLATES template struct foo { template struct nested { typedef foo other; }; template void mfoo(const U&); }; template template void foo::mfoo(const U&) { } template void test_proc(T i) { foo f1; typedef foo ifoo; f1.mfoo(i); f1.template mfoo(i); typedef typename ifoo::template nested bound_t; typedef typename bound_t::other other; other o; (void) &o; // avoid "unused variable" warning } #else template void test_proc(T) { } #endif int test() { test_proc(0); return 0; } }