#include <iostream>
#include <type_traits>
using namespace std;
template < typename T>
struct dummy { } ;
template < typename T, typename U>
struct fail : dummy< T> , dummy< U> , true_type { } ;
template < typename T, typename U = void >
struct test : false_type { } ;
template < typename T>
struct test< T, typename enable_if< fail< T, T> :: value , void > :: type > : true_type { } ;
int main( ) {
cout << test< int > :: value << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RydWN0IGR1bW15IHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CnN0cnVjdCBmYWlsIDogZHVtbXk8VD4sIGR1bW15PFU+LCB0cnVlX3R5cGUge307Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IHZvaWQ+CnN0cnVjdCB0ZXN0IDogZmFsc2VfdHlwZSB7fTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdHJ1Y3QgdGVzdDxULCB0eXBlbmFtZSBlbmFibGVfaWY8ZmFpbDxULCBUPjo6dmFsdWUsIHZvaWQ+Ojp0eXBlPiA6IHRydWVfdHlwZSB7fTsKCmludCBtYWluKCkgewoJY291dCA8PCB0ZXN0PGludD46OnZhbHVlIDw8IGVuZGw7Cn0=
compilation info
prog.cpp: In instantiation of ‘struct fail<int, int>’:
prog.cpp:18:19: required from here
prog.cpp:9:8: error: duplicate base type ‘dummy<int>’ invalid
struct fail : dummy<T>, dummy<U>, true_type {};
^
stdout