[Bug c++/48646] New: [C++0x] SFINAE does not handle comparisons between incompatible pointer types well
gintensubaru at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Apr 17 07:34:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48646
Summary: [C++0x] SFINAE does not handle comparisons between
incompatible pointer types well
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: gintensubaru@gmail.com
template< class T >
T&& declval();
template< class T, class U >
struct is_equality_comparable
{
typedef char one_;
typedef struct { char a[2]; } two_;
template< class T_, class U_ >
static decltype( declval<T_>() == declval<U_>(), one_() ) test_( int );
template< class T_, class U_ >
static two_ test_( ... );
static const bool value = ( sizeof( test_<T, U>( 0 ) ) == 1 );
};
int main()
{
static_assert( is_equality_comparable<int*, void*>::value, "OK." );
static_assert( is_equality_comparable<int*, double*>::value, "shall be
false." );
}
-------------------
This code should be ill-formed, but gcc (-std=c++0x) accepts it, on all of
following versions:
4.5.1
4.6.0
4.6.1-20110415
4.7.0-20110416
More information about the Gcc-bugs
mailing list