initializer-list相关内容

循环范围内的初始化列表

我有从单个超类型派生的不同类型的对象.我想知道在这样的循环范围内使用 std::initializer 列表是否有任何缺点: for(auto object: std::initializer_list{object1, object2, object3}) {} 是否完全可以且高效,还是使用数组更好?对我来说,std::array 解决方案似乎对编译器的限制更大,并且显式 ..
发布时间:2022-01-24 20:08:27 C/C++开发

元组向量和 initializer_list

我尝试用 gcc4.7 编译以下代码片段 向量>vp = {{1,'a'},{2,'b'}};//对于对向量,它就像一个魅力.向量>vt = {{1,0.1,'a'},{2,4.2,'b'}}; 但是,对于元组的向量,编译器会抱怨: 错误:从初始化列表转换为“std::tuple"将使用显式构造函数“constexpr ..
发布时间:2022-01-20 08:13:20 C/C++开发

C++11 中带或不带花括号的初始化差异

我们可以在 C++11 中通过两种方式初始化变量 一个: int abc = 7; 两个: int abc {7}; 这两种方法有什么区别? 编译器如何区别对待它们或执行这些代码的方式? 解决方案 短版 通过{..}初始化是列表初始化,禁止缩小转换.例如,如果 LLONG_MAX 是 long long int 的最大值,而您的 int 不能表示: int x ..
发布时间:2022-01-18 23:44:47 其他开发

分配给初始化列表中的只读属性

谁能告诉我,为什么要编译? 命名空间 ManagedConsoleSketchbook{公共接口 IMyInterface{int 属性{得到;放;}}公开课 MyClass{私有 IMyInterface 字段 = null;公共 IMyInterface 属性{得到{返回字段;}}}公开课计划{公共静态无效方法(MyClass @class){Console.WriteLine(@class ..
发布时间:2022-01-02 18:36:19 C#/.NET

我可以在“初始化器太少"上导致编​​译错误吗?

我正在使用聚合初始值设定项为单元测试设置静态数据块. 我想使用数组大小​​作为预期的元素数,但如果提供的初始值设定项太少,这可能会失败: my_struct_type 预期[14] ={{ 1.234, 0, 'c' },{ 3.141, 1, 'z' },{ 2.718, 0, 'a' }}; 这不会在 Visual Studio 2008 中产生编译器错误. 我希望能够这样使用 ..

std::initializer_list 中的 std::shared_ptr 似乎过早被破坏

编辑:这确实是由 Visual Studio 中的错误引起的 - 它已经得到修复.将更新 2 应用到 Visual Studio 后,该问题无法重现(此处提供候选版本).我道歉;我以为我的补丁是最新的. 当我在 Visual Studio 2013 中运行以下代码时,我终生无法弄清楚为什么会出现段错误: #include #include 结构基{虚拟 int GetValue() { 返 ..

初始化程序列表与 2013 中的双重删除

今天在我的项目中遇到内存问题,一个类使用 c++ 11 initializer_list.系统发出内存问题信号:“dbgdel.cpp 中的表达式 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse).我将代码简化为一个简单示例,它不再抛出表达式,但问题从调试输出中变得明显.在我看来,这代码是正确的,它似乎也适用于 g++. #include #include #incl ..
发布时间:2021-12-22 18:24:37 C/C++开发

初始化列表构造不可复制(但可移动)对象的向量

可以将不可复制但可移动类型的 push_back 右值转化为该类型的向量: #include 结构体{S(int);S(S&&);};int main(){std::vectorv;v.push_back(S(1));v.push_back(S(2));v.push_back(S(3));} 但是,当我尝试使用相同的右值对向量进行初始化列表构造时,我收到有关需要复制构造函数的错误: #inc ..
发布时间:2021-12-21 13:34:33 C/C++开发

字符串初始化的 gcc 诊断不一致

我正在使用 gcc 4.9.1/Mingw 并使用以下代码编译代码: gcc test.c -otest.exe -std=c11 -pedantic-errors -Wall -Wextra 此代码给出了诊断: int main (void){char a[5] = {'h','e','l','l','o','\0'};} 错误:数组初始值设定项字符 a[5] 中的元素过多 ..
发布时间:2021-12-18 23:17:25 其他开发