我们减少了一部分代码,我们无法找到正确的语法以作为最小示例。等同于“typename”,表示从属名称确实是'模板模板参数'
假设下面的定义(不担心有关“为什么”;)现在
template <class>
class Element
{};
template <template <class> class>
class Client
{};
template <class>
struct TemplatedProvider
{
template <class T>
using element_template = Element<T>;
};
,用C++ 11以后,我们可以使用一个类模板或类型别名模板实例化Client
模板。下面的函数编译就好:
void fun()
{
Client<Provider::element_template> client;
Client<TemplatedProvider<int>::element_template> clientBis;
}
但我们无法找到在以下情况下,当给Client
模板参数是一个从属名称的正确语法:
template <class T>
void templatedFun()
{
Client<TemplatedProvider<T>::element_template> client;
}
锵(3.6测试)发出以下编译错误:
template argument for template template parameter must be a class template or type alias template
我们可以修复这个语法吗?
附加信息链接 – GreatAndPowerfulOz