L. *_*uce 2 c++ templates dependent-name
考虑以下:
template<typename T> struct Foo {
typedef void NonDependent;
typedef typename T::Something Dependent;
}
Run Code Online (Sandbox Code Playgroud)
我想引用NonDependent而不指定任何模板参数,如Foo::NonDependent.
我知道我总是可以使用虚拟参数:
Foo<WhateverSuits>::NonDependent bla;
Run Code Online (Sandbox Code Playgroud)
但这很难看,而且由于它NonDependent是不变的T,我想在不依赖假人的情况下参考它.可能吗?
谢谢
如果NonDependent不指定模板参数,则无法引用,因为根据模板参数,它可能会有所不同或完全不存在.例如:
template<> struct Foo<int>
{
typedef float NonDependent;
};
template<> struct Foo<std::string>
{
typedef typename std::string::value_type Dependent;
};
Run Code Online (Sandbox Code Playgroud)
您可能需要将NonDependent声明移动到基础(非模板)结构中并改为引用它:
struct FooBase{ typedef void NonDependent; };
template<typename T> struct Foo: public FooBase
{
typedef typename T::Something Dependent;
};
template<> struct Foo<int>: public FooBase
{
typedef float NonDependent;
};
FooBase::NonDependent bla;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |