【发布时间】:2018-02-22 16:08:20
【问题描述】:
您可以从命名空间中获得类模板的“简写”,只需给出模板的名称即可。但是,如果类模板在一个类中,我必须创建一个别名模板并写出所有模板参数和参数——这不利于可维护性:
namespace mynamespace {
template<template<class> class T>
class MyClass;
}
using mynamespace::MyClass; // OK, straight and simple
class MyOuterClass {
public:
template<template<class> class T>
class MyInnerClass;
};
// using MyInnerClass = MyOuterClass::MyInnerClass; // error: invalid use of template-name 'MyOuterClass::MyInnerClass' without an argument list
// template<typename... TArgs> // error: type/value mismatch at argument 1 in template parameter list for 'template<template<class> class T> class MyOuterClass::MyInnerClass'
// using MyInnerClass = MyOuterClass::MyInnerClass<TArgs...>;
template<template<class> class T> // OK, but copying the template parameter list is bad, there should be some "auto" mechanism...
using MyInnerClass = MyOuterClass::MyInnerClass<T>;
int main(){}
我能否以更简单的方式为此类模板提供“速记”?
【问题讨论】:
标签: c++ templates namespaces