对于许多问题,答案似乎可以在"标准"中找到.但是,我们在哪里找到它?最好是在线.
谷歌搜索有时会觉得徒劳,尤其是对于C标准,因为他们在编程论坛的大量讨论中被淹没.
要开始这个,因为这些是我现在正在搜索的,那里有很好的在线资源:
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是模板参数.