我得到:错误C2244在使用 constexpr 时无法将函数定义与现有声明匹配。
template<int N> constexpr int x() {
return N*N;
}
template<int X, int N> class B {
public:
int data;
};
template<int N> class A {
public:
int f(B<x<N>(), N> b);
};
template<int N> int A<N>::f(B<x<N>(), N> b) {
return b.data;
}
int main() {
A<10> a;
return 0;
}
如果我删除 constexpr 函数并用表达式 N * N 替换,那么一切正常。
GNU C ++编译它,根据https://msdn.microsoft.com/en-us/library/hh567368.aspx,我希望 constexpr 在Visual Studio 2015上正常工作。