有时我想从模板外部访问模板参数的类型。为此,我按如下方式键入参数:
template<typename Vector>
class SomeAlgorithm
{
public:
typedef Vector Vector;
// ...
}
我觉得这很方便,因为我可以在客户端代码中使用相同的名称。这是显而易见的和简单的。
template<typename A>
void ComputeSomething(const A& a)
{
typedef typename A::Vector Vector;
Vector v = ...
}
但是,ReSharper for C ++会发出警告:
typedef redeclares a template parameter from an outer scope.
类型定义类型参数是否有不良影响?还是在为typedef使用另一个名称之外,还有更好的方法来实现相同的目的?
最佳答案
类型定义类型参数是否有不良影响?
是的,它无效。参数名称在模板范围内已经是typedef名称,因此您不能声明另一个具有相同名称的typedef。
还是在为typedef使用另一个名称之外,还有更好的方法来实现相同的目的?
否。为typedef使用另一个名称。
关于c++ - 创建typedef从外部作用域重新声明模板参数的负面影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26407703/