template< template<typename ...> class >
struct A
{
static constexpr int v = 7;
};
template< template<typename> class T>
struct A<T>
{
static constexpr int v = 3;
};
template< typename ... >
struct B
{};
template< typename >
struct C
{};
static_assert(A<B>::v == 7, "#1");
static_assert(A<C>::v == 3, "#2");
int main()
{
}
dGVtcGxhdGU8IHRlbXBsYXRlPHR5cGVuYW1lIC4uLj4gY2xhc3MgPgpzdHJ1Y3QgQQp7CiAgICBzdGF0aWMgY29uc3RleHByIGludCB2ID0gNzsKfTsKCnRlbXBsYXRlPCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgVD4Kc3RydWN0IEE8VD4KewogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdiA9IDM7Cn07CgoKdGVtcGxhdGU8IHR5cGVuYW1lIC4uLiA+CnN0cnVjdCBCCnt9OwoKdGVtcGxhdGU8IHR5cGVuYW1lID4Kc3RydWN0IEMKe307CgoKc3RhdGljX2Fzc2VydChBPEI+Ojp2ID09IDcsICIjMSIpOwpzdGF0aWNfYXNzZXJ0KEE8Qz46OnYgPT0gMywgIiMyIik7CgoKaW50IG1haW4oKQp7Cgp9