#include <iostream>
#include <type_traits>
struct Outer
{
template<typename T, typename = void>
struct Inner
{
};
template<typename T>
struct Inner
<
typename std::enable_if
<
std::is_same<T, double>::value,
T
>::type,
T
>
{
};
};
int main()
{
Outer::Inner<int> oii;
Outer::Inner<double> oid;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgpzdHJ1Y3QgT3V0ZXIKewoJdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgoJc3RydWN0IElubmVyCgl7Cgl9OwoJdGVtcGxhdGU8dHlwZW5hbWUgVD4KCXN0cnVjdCBJbm5lcgoJPAoJCXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCgkJPAoJCQlzdGQ6OmlzX3NhbWU8VCwgZG91YmxlPjo6dmFsdWUsCgkJCVQKCQk+Ojp0eXBlLAoJCVQKCT4KCXsKCX07Cn07CgppbnQgbWFpbigpCnsKCU91dGVyOjpJbm5lcjxpbnQ+IG9paTsKCU91dGVyOjpJbm5lcjxkb3VibGU+IG9pZDsKfQo=