【发布时间】:2015-02-07 15:43:22
【问题描述】:
在下面的代码中,我将类类型R 和该类型的常量表达式作为模板参数传递。但是 clang 不接受:
#include <iostream>
template<class T, T t>
void foo(){ std::cout << "foo()" << std::endl; }
class R
{
public:
int f;
constexpr R(): f(15){ }
};
constexpr R r;
int main(){ foo<R, r>(); } //note: candidate template ignored:
//invalid explicitly-specified argument
//for template parameter 't'
在N4296::14.3.2 [temp.arg.nontype]我找不到除了非类型模板参数应该是常量表达式之外的任何限制。
【问题讨论】:
-
试试这个链接希望对你有帮助stackoverflow.com/questions/11081573/…