mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-04 15:24:29 +02:00
Workarounds for GCC bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26904
[SVN r33505]
This commit is contained in:
@@ -13,8 +13,8 @@ namespace boost { namespace mpl {
|
|||||||
|
|
||||||
template< typename T, bool has_type_ >
|
template< typename T, bool has_type_ >
|
||||||
struct quote_impl
|
struct quote_impl
|
||||||
: T
|
|
||||||
{
|
{
|
||||||
|
typedef typename T::type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
|
@@ -60,9 +60,19 @@ namespace boost { namespace mpl {
|
|||||||
|
|
||||||
template< typename T, bool has_type_ >
|
template< typename T, bool has_type_ >
|
||||||
struct quote_impl
|
struct quote_impl
|
||||||
|
// GCC has a problem with metafunction forwarding when T is a
|
||||||
|
// specialization of a template called 'type'.
|
||||||
|
# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
|
||||||
|
&& BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
|
||||||
|
&& BOOST_WORKAROUND(__GNUC_PATCHLEVEL__ BOOST_TESTED_AT(2))
|
||||||
|
{
|
||||||
|
typedef typename T::type type;
|
||||||
|
};
|
||||||
|
# else
|
||||||
: T
|
: T
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
struct quote_impl<T,false>
|
struct quote_impl<T,false>
|
||||||
|
Reference in New Issue
Block a user