我們減少了一部分代碼,我們無法找到正確的語法以作爲最小示例。等同於「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