blob: ef58d272a19b9e711ceb06933bdf019fb016ef21 [file] [log] [blame]
// (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 <class T>
int f(T const volatile*, BOOST_DEDUCED_TYPENAME T::type* = 0)
{
return 0;
}
struct X { typedef int type; };
int test()
{
return f((X*)0);
}
}