#include <iostream>
template<typename T>
using IsEnumConcept = std::enable_if_t<std::is_enum<T>::value>;
template<typename T, typename = void>
struct OutImpl
{
void operator()() const { std::cout<<"for not enum\n"; }
};
template <typename T>
struct OutImpl<T, IsEnumConcept<T>>
{
void operator()() const { std::cout<<"for enum\n"; }
};
template<typename T>
void out()
{
OutImpl<T>()();
}
enum class MyEnum{};
int main() {
out<MyEnum>();
out<int>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgSXNFbnVtQ29uY2VwdCA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT47Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+CnN0cnVjdCBPdXRJbXBsCnsKCXZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgc3RkOjpjb3V0PDwiZm9yIG5vdCBlbnVtXG4iOyB9CQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBPdXRJbXBsPFQsIElzRW51bUNvbmNlcHQ8VD4+CnsKCXZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgc3RkOjpjb3V0PDwiZm9yIGVudW1cbiI7IH0JCn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIG91dCgpCnsKCU91dEltcGw8VD4oKSgpOwp9CgplbnVtIGNsYXNzIE15RW51bXt9OwoKaW50IG1haW4oKSB7CglvdXQ8TXlFbnVtPigpOwoJb3V0PGludD4oKTsKfQo=