#include <iostream>
#include <type_traits>
struct A {
using my_tag = int; // changed to int
};
struct B {};
// same as your enable_if_type
template <typename...>
using void_t = void;
template<class T, class Enable = void>
struct has_my_tag : std::false_type {};
template<class T> // specialization will not match with int
struct has_my_tag<T, typename T::my_tag> : std::true_type
{};
int main() {
std::cout << has_my_tag<A>::value << std::endl;
std::cout << has_my_tag<B>::value << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgoKc3RydWN0IEEgewogIHVzaW5nIG15X3RhZyA9IGludDsgLy8gY2hhbmdlZCB0byBpbnQKfTsKCnN0cnVjdCBCIHt9OwoKCi8vIHNhbWUgYXMgeW91ciBlbmFibGVfaWZfdHlwZQp0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+CnVzaW5nIHZvaWRfdCA9IHZvaWQ7CgoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRW5hYmxlID0gdm9pZD4Kc3RydWN0IGhhc19teV90YWcgOiBzdGQ6OmZhbHNlX3R5cGUge307Cgp0ZW1wbGF0ZTxjbGFzcyBUPiAvLyBzcGVjaWFsaXphdGlvbiB3aWxsIG5vdCBtYXRjaCB3aXRoIGludApzdHJ1Y3QgaGFzX215X3RhZzxULCB0eXBlbmFtZSBUOjpteV90YWc+IDogc3RkOjp0cnVlX3R5cGUKe307CgoKaW50IG1haW4oKSB7CglzdGQ6OmNvdXQgPDwgaGFzX215X3RhZzxBPjo6dmFsdWUgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8IGhhc19teV90YWc8Qj46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9