// (C) Copyright John Maddock and Dave Abrahams 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_DEDUCED_TYPENAME // TITLE: deduced typenames // DESCRIPTION: Some compilers can't use the typename keyword in deduced contexts. #ifndef BOOST_DEDUCED_TYPENAME #define BOOST_DEDUCED_TYPENAME typename #endif namespace boost_deduced_typename{ template int f(T const volatile*, BOOST_DEDUCED_TYPENAME T::type* = 0) { return 0; } struct X { typedef int type; }; int test() { return f((X*)0); } }