在C++17中,我们可以使用template自变量作为另一个模板的参数,这可以使我们创建别名模板类。例如:
template
struct MyTemplateClass
{
// ...
};
template
using MyAliasTemplate = MyTemplateClass;
但是,如果我们将内部类作为模板参数,则必须使用依赖限定名称。例如:
template
struct MyTemplateClass
{
template
struct MyInnerTemplateClass
{
// ...
};
};
template
using MyAliasTemplate = typename MyTemplateClass::template MyInnerTemplateClass;
在这种情况下,编译器需要访问MyTemplateClass的依赖限定名称来获取MyInnerTemplateClass。上述代码将MyInnerTemplateClass委托给MyAliasTemplate。