blob: 4f0901fc552d95fa3d73c90523d08b658b04e2dd [file] [log] [blame]
// (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 <class T>
struct foo
{
template <class U>
struct nested
{
typedef foo<U> other;
};
template <class U>
void mfoo(const U&);
};
template <class T>
template <class U>
void foo<T>::mfoo(const U&)
{
}
template <class T>
void test_proc(T i)
{
foo<double> f1;
typedef foo<T> ifoo;
f1.mfoo(i);
f1.template mfoo<T>(i);
typedef typename ifoo::template nested<double> bound_t;
typedef typename bound_t::other other;
other o;
(void) &o; // avoid "unused variable" warning
}
#else
template <class T>
void test_proc(T)
{
}
#endif
int test()
{
test_proc(0);
return 0;
}
}