08/07/16 23:03:42
>>813
役に立たないかもしれないけど、要件はクリア?
#include <iostream>
template<class T> struct Y { T m; };
struct Z {};
template<template<class T> class C>
struct X
{
template<class A>
static void f(C<A> x)
{
std::cout << "f(C<A>)" << std::endl;
f(x.m);
}
template<class B>
static void f(B x)
{
std::cout << "f(B)" << std::endl;
}
};
int main()
{
Y<Y<Z> > y;
X<Y>::f(y);
return 0;
}