模板错误C2244无法在Microsoft Visual Studio 2015中使用constexpr将函数定义与现有声明匹配

时间:2016-11-17 17:38:06

标签: c++ visual-studio-2015 constexpr

我得到:错误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上正常工作。

0 个答案:

没有答案