Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 参数包原因";未初始化的局部变量“;在VisualStudio中_C++_C++11_Templates_Visual C++ - Fatal编程技术网

C++ 参数包原因";未初始化的局部变量“;在VisualStudio中

C++ 参数包原因";未初始化的局部变量“;在VisualStudio中,c++,c++11,templates,visual-c++,C++,C++11,Templates,Visual C++,以下代码在gcc和clang下编译良好,但在Visual Studio 2015及更早版本中抛出C4700“未初始化局部变量‘a’used”错误: template<int T> class V { public: int v[T]; V() = default; template<typename ...A> V(A... args): v{args...} {} }; int main() { V&l

以下代码在gcc和clang下编译良好,但在Visual Studio 2015及更早版本中抛出C4700“未初始化局部变量‘a’used”错误:

template<int T>
class V
{
public:
    int v[T];

    V() = default;
    template<typename ...A>
    V(A... args):
        v{args...}
    {}
};

int main()
{
    V<2> a(2, 2);
    V<2> b = a;
    return 0;
}
模板
第五类
{
公众:
int v[T];
V()=默认值;
模板
V(A…args):
v{args…}
{}
};
int main()
{
va(2,2);
V b=a;
返回0;
}

如果我向构造函数添加body(通过删除
=default
并添加
{}
),错误就会消失。我找不到任何在规范中规定这个行为的东西。这是VisualC++编译器中的一个bug,还是我在规范中漏掉了什么?

我尝试用VisualStudio的不同版本编译它,我不能重现这个问题。我认为VS大于2015的人会支持这个问题。不确定2015年。它在2017年编译,在2013年失败(尽管我预计它会失败)。我尝试用不同版本的Visual Studio编译它,但我无法重现这个问题。我认为早于2015年的VS不支持这一点。不确定2015年。它在2017年编译,在2013年失败(尽管我预计它会因此失败)。