forked from boostorg/bind
SFINAE out the converting constructor of arg<I> to avoid hard errors with is_convertible on g++ 4.8/4.9
This commit is contained in:
@@ -21,20 +21,27 @@
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/is_placeholder.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
|
||||
template< int I, int J > struct _arg_eq
|
||||
{
|
||||
};
|
||||
|
||||
template< int I > struct _arg_eq< I, I>
|
||||
{
|
||||
typedef void type;
|
||||
};
|
||||
|
||||
template< int I > struct arg
|
||||
{
|
||||
BOOST_CONSTEXPR arg()
|
||||
{
|
||||
}
|
||||
|
||||
template< class T > BOOST_CONSTEXPR arg( T const & /* t */ )
|
||||
template< class T > BOOST_CONSTEXPR arg( T const & /* t */, typename _arg_eq< I, is_placeholder<T>::value >::type * = 0 )
|
||||
{
|
||||
BOOST_STATIC_ASSERT( I == is_placeholder<T>::value );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user