c++ - 参数包导致 Visual Studio 中出现“未初始化的局部变量”
问题描述
以下代码在 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;
}
如果我将 body 添加到构造函数(通过删除= default
和添加{}
),错误就会消失。我在规范中找不到任何要求这种行为的东西。这是 Visual C++ 编译器中的错误还是我在规范中遗漏了什么?
解决方案
推荐阅读
- angular - Asp.Net核心角度验证和提交表单不起作用
- dynamics-crm - Dynamics 365 Developer Toolkit 错误:由于网络中断而无法加载实体
- php - 无法使用 php7 安装 phalcon ubuntu 19.10
- jquery - d3.js 树 - 选择叶节点列表返回树中的所有节点,而不仅仅是选定的节点项
- android - 是否可以在不生根设备的情况下以编程方式触摸屏幕上的事件?
- c++ - 具有对齐存储的动态内存分配
- java - java.lang.IllegalArgumentException:非法 base64 字符 -1
- angular - 从可观察的角度 7 中获取最后发出的值
- reactjs - 如何在 React 中的套接字事件后删除数组中的元素?
- android - 应用程序关闭时在后台检查互联网连接