#include <iostream>
struct Index {
constexpr operator int() const { return 666; }
};
template <int i> void foo() {
std::cout << i << std::endl;
}
void wrapper(Index index) {
foo<index>();
}
int main() {
Index index;
// foo<index>(); // error: the value of ‘index’ is not usable in a constant expression
wrapper(index);
}
大家好。
我使用constexpr转换变量&#34; index&#34;到int
值,替换为&#34; foo&#34;模板化的功能。
如果我直接从&#34; main&#34;中调用foo<index>()
,我会收到编译错误。
如果从&#34;包装器&#34;完成相同的调用,那么一切都可以编译并正常工作。
我在那里错过了什么?
编译命令:g++ -std=c++14 main.tex
与g ++(GCC)5.3.1 20160406(Red Hat 5.3.1-6)。
答案 0 :(得分:0)