// (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_MSVC6_MEMBER_TEMPLATES // TITLE: microsoft member templates // DESCRIPTION: Microsoft Visual C++ 6.0 has enough member // template idiosyncrasies (being polite) that // BOOST_NO_MEMBER_TEMPLATES is defined for this compiler. // BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow // compiler specific workarounds. #ifndef BOOST_NESTED_TEMPLATE #define BOOST_NESTED_TEMPLATE template #endif namespace boost_msvc6_member_templates{ template struct foo { template struct nested { typedef foo other; }; template void mfoo(const U&) { } }; template void vc6_mem_test(T i) { foo f1; typedef foo ifoo; f1.mfoo(i); typedef typename ifoo::BOOST_NESTED_TEMPLATE nested bound_t; typedef typename bound_t::other other; other o; (void)o; } int test() { int i = 0; vc6_mem_test(i); return 0; } }