#include <iostream>
#include <type_traits>
template <typename T, typename = void>
struct SH_trait
{
typedef std::string type;
};
template <typename T>
struct SH_trait<T, typename std::enable_if<std::is_integral<T>::value>::type>
{
typedef double type;
};
int main()
{
static_assert( std::is_same<SH_trait<int>::type, double>::value, "" );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgpzdHJ1Y3QgU0hfdHJhaXQKewogICAgdHlwZWRlZiBzdGQ6OnN0cmluZyB0eXBlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBTSF90cmFpdDxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGU+CnsKICAgIHR5cGVkZWYgZG91YmxlIHR5cGU7Cn07CgppbnQgbWFpbigpCnsKICAgIHN0YXRpY19hc3NlcnQoIHN0ZDo6aXNfc2FtZTxTSF90cmFpdDxpbnQ+Ojp0eXBlLCBkb3VibGU+Ojp2YWx1ZSwgIiIgKTsKfQ==