#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
template <typename E>
std::false_type has_a_impl(...);
template <typename E> auto has_a_impl(int) -> decltype(E::a, std::true_type{});
template <typename E>
using has_a = decltype(has_a_impl<E>(0));
template <typename E>
std::enable_if_t<has_a<E>::value, int>
get_a_int_val() { return static_cast<int>(E::a); }
template <typename E>
std::enable_if_t<!has_a<E>::value, int>
get_a_int_val() { return 42; }
enum class E
{
a = 0
};
int main()
{
std::cout << get_a_int_val<E>() << std::endl;
std::cout << get_a_int_val<int>() << std::endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4Kc3RkOjpmYWxzZV90eXBlIGhhc19hX2ltcGwoLi4uKTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBFPiBhdXRvIGhhc19hX2ltcGwoaW50KSAtPiBkZWNsdHlwZShFOjphLCBzdGQ6OnRydWVfdHlwZXt9KTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBFPgp1c2luZyBoYXNfYSA9IGRlY2x0eXBlKGhhc19hX2ltcGw8RT4oMCkpOwoKCnRlbXBsYXRlIDx0eXBlbmFtZSBFPgpzdGQ6OmVuYWJsZV9pZl90PGhhc19hPEU+Ojp2YWx1ZSwgaW50PgpnZXRfYV9pbnRfdmFsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihFOjphKTsgfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEU+CnN0ZDo6ZW5hYmxlX2lmX3Q8IWhhc19hPEU+Ojp2YWx1ZSwgaW50PgpnZXRfYV9pbnRfdmFsKCkgeyByZXR1cm4gNDI7IH0KCmVudW0gY2xhc3MgRQp7CiAgICBhID0gMAp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgZ2V0X2FfaW50X3ZhbDxFPigpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBnZXRfYV9pbnRfdmFsPGludD4oKSA8PCBzdGQ6OmVuZGw7Cn0K