#include <iostream>
struct Policy1
{
template<typename T>
static void Print(const T &msg)
{
std::cout << "1: " << msg << std::endl;
}
};
struct Policy2
{
template<typename T>
static void Print(const T &msg)
{
std::cout << "2: " << msg << std::endl;
}
};
template<typename Tpolicy = Policy1>
class Client
{
public:
static void Test()
{
Tpolicy::template Print<short>(1);
}
};
int main()
{
Client<>::Test();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgUG9saWN5MQp7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAmbXNnKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiMTogIiA8PCBtc2cgPDwgc3RkOjplbmRsOwogICAgfQp9OwpzdHJ1Y3QgUG9saWN5Mgp7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAmbXNnKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiMjogIiA8PCBtc2cgPDwgc3RkOjplbmRsOwogICAgfQp9Owp0ZW1wbGF0ZTx0eXBlbmFtZSBUcG9saWN5ID0gUG9saWN5MT4KY2xhc3MgQ2xpZW50CnsKcHVibGljOgogICAgc3RhdGljIHZvaWQgVGVzdCgpCiAgICB7CiAgICAgICAgVHBvbGljeTo6dGVtcGxhdGUgUHJpbnQ8c2hvcnQ+KDEpOwogICAgfQp9OwppbnQgbWFpbigpCnsKICAgIENsaWVudDw+OjpUZXN0KCk7Cn0K