【发布时间】:2017-03-24 11:03:49
【问题描述】:
我有 4 个测试用例,我相信它们都是有效的:
constexpr int f(int const& /*unused*/){
return 1;
}
void g(int const& p){
constexpr int a = f(p); // clang error, gcc valid
int v = 0;
constexpr int b = f(v); // clang valid, gcc valid
int const& r = v;
constexpr int c = f(r); // clang error, gcc error
int n = p;
constexpr int d = f(n); // clang valid, gcc valid
}
int main(){
int p = 0;
g(p);
}
Clang 和 GCC 仅在第一个测试用例上有所不同。
我使用 clang 4 & 5 (20170319) 和 GCC 7.0.1 (20170221) 进行了测试。
如果我是对的,它将大大简化 static_assert 中 boost::hana 的使用。
【问题讨论】: