#include <iostream>
enum MyValue
{
Unk,
A,
B
};
template<typename T>
struct get_value
{
static constexpr MyValue value = MyValue::Unk;
};
template<>
struct get_value<int>
{
static constexpr MyValue value = MyValue::A;
};
template<>
struct get_value<double>
{
static constexpr MyValue value = MyValue::B;
};
int main()
{
std::cout << get_value<char>::value << std::endl;
std::cout << get_value<int>::value << std::endl;
std::cout << get_value<double>::value << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKZW51bSBNeVZhbHVlCnsKICBVbmssCiAgQSwKICBCCn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgZ2V0X3ZhbHVlCnsKICBzdGF0aWMgY29uc3RleHByIE15VmFsdWUgdmFsdWUgPSBNeVZhbHVlOjpVbms7Cn07Cgp0ZW1wbGF0ZTw+CnN0cnVjdCBnZXRfdmFsdWU8aW50Pgp7CiAgc3RhdGljIGNvbnN0ZXhwciBNeVZhbHVlIHZhbHVlID0gTXlWYWx1ZTo6QTsKfTsKCnRlbXBsYXRlPD4Kc3RydWN0IGdldF92YWx1ZTxkb3VibGU+CnsKIHN0YXRpYyBjb25zdGV4cHIgTXlWYWx1ZSB2YWx1ZSA9IE15VmFsdWU6OkI7Cn07CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6Y291dCA8PCBnZXRfdmFsdWU8Y2hhcj46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBnZXRfdmFsdWU8aW50Pjo6dmFsdWUgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IGdldF92YWx1ZTxkb3VibGU+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7Cn0=