mkm*_*afa 12 c++ templates c++11
template <typename>
struct B
{
constexpr static int T = 5;
};
template <int T>
struct D : B<int>
{
constexpr static int value = T;
};
int main()
{
std::cout << D<7>::value << std::endl; // 5, how to get 7 ?
}
Run Code Online (Sandbox Code Playgroud)
正如我最近了解到,在查找期间在基类中的名称之后检查模板派生类的模板参数.话虽如此,无论如何都要限定名称T初始化value以引用T派生类的模板参数?
编辑:
到目前为止,评论中的讨论似乎是实现这一点的唯一方法是使基类类型/值依赖,这将延迟查找基数的名称(到实例化阶段),从而使唯一可用的值for T是模板参数.
我不完全确定我理解这个问题,但我想decltype你做了什么:
template <int T>
struct D : B<decltype(T)>
{
constexpr static decltype(T) value = T;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |