问题标签 [initializer-list]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 大括号封闭的初始化列表构造函数
我有具有以下构造函数的类表型:
我可以像这样创建一个表型:
但是当我尝试创建这样的一个时出现错误:
输出:
该错误似乎表明有一种方法可以定义一个构造函数,该构造函数采用大括号括起来的初始值设定项列表。有谁知道如何做到这一点?
c++ - 为什么我的模板不接受初始化列表
我创建了一个模板如下
我希望它可以被容器调用,也可以被初始化列表调用。我认为它会是initializer_list<int>
,当按如下方式调用时。
但是 GCC 表现得好像它不符合标准
谁能解释我如何在没有警告的情况下完成这项工作?谢谢!
c++ - 使用无前缀成员变量时如何命名构造函数参数?
当然,没有一种正确的方法可以做到这一点,但我什至想不出任何像样的命名方案,这就是我在这里问的原因。(所以:虽然所有答案都是主观的,但它们仍然有用!)
问题如下: 对于简单的聚合结构,我们不使用成员 var 前缀。
然而,有时提供一个初始化器 ctor 来初始化结构体是很有用的,但是 - 当参数的最自然名称已经被成员变量本身占用时,我无法为参数提出一个合适的命名方案:
其他人在这种情况下使用什么?
c++ - initializer_list::size() 上的 static_assert
为什么在 a 中是std::initializer_list<_E>::size
不允许的static_assert
,即使它constexpr
在我的 libstdc++ (v. 4.6)中被声明为 a ?
例如,下面的代码:
给出以下错误:
请注意,这对于一个简单的示例来说效果很好:
c++ - c++ 初始化器列表和可变参数模板
我想创建一个数组:
为什么不编译?(用 g++ 4.6 测试)
c++ - 初始化一个包含自身向量的结构
我有一个菜单系统,我想从常量数据中初始化。AMenuItem
可以包含一个作为子菜单的向量MenuItems
。但它只能在一定程度上起作用。以下是问题的核心:
g++ -std=c++0x
(版本 4.4.5)处理s1
and s2
,但s3
返回:
(见ideone)。难道我做错了什么?
c++ - 从初始化列表初始化,但没有 {{{{{{{{ ... }}}}}}}}?
我最近偶然发现了初始化列表的一些问题。考虑一个存储类似地图的数据的程序
这看起来直截了当。但是当初始化它时,它变得丑陋。我想让它看起来像
但是编译器并不想接受这个,因为上面的意思是它应该寻找一个可以分别接受{ "One", 1 }
和的双参数构造函数{ "Two", 2 }
。我需要添加额外的大括号,使其看起来像一个接受的单参数构造函数{ { ... }, { ... } }
我不想那样写。由于我有一个类似映射的类,并且初始化程序具有映射列表的抽象值,因此我想使用以前的版本,并且独立于任何此类实现细节,例如构造函数的嵌套级别。
一种解决方法是声明一个初始化列表构造函数
现在我可以使用前者,因为当我有一个初始化列表构造函数时,整个初始化列表被视为一个元素,而不是被拆分为多个元素。但我认为构造函数的这种单独需求非常丑陋。
我正在寻找指导:
- 您如何看待前一种和后一种形式的初始化?在这种情况下需要额外的大括号是否有意义?
- 您认为在这种情况下添加初始化列表构造函数的要求很糟糕吗?
如果你同意我的观点,前一种初始化方式更好,你能想到什么解决方案?
c++ - 将包含 initializer_list 的参数包扩展为构造函数
我打算shared_ptr
在即将到来的项目中使用很多,所以(不知道std::make_shared
)我想编写一个可变参数模板函数spnew<T>(...)
作为shared_ptr
-returning的替代new
。一切都很顺利,直到我尝试使用构造函数包含initializer_list
. 当我尝试编译下面的最小示例时,我从 GCC 4.5.2 得到以下信息:
奇怪的是,如果我std::make_shared
替换spnew
. 在任何一种情况下,当涉及到时,它似乎都错误地推断出参数initializer_list
,错误地将Args...
其视为空。这是示例:
这只是我的疏忽还是错误?
c++ - C++0x 嵌套初始化列表
我想使用 C++0x 新的初始化程序列表功能来初始化 std::vector ,并为我目前正在处理的新 API 使用编译时定义的项目数。像这样的东西:
你知道如何做到这一点吗?甚至可能吗?我知道我需要使用 TMP 和递归来建立重复字符串的列表,并最终通过常量(例如,枚举)以某种方式访问它。但似乎我什至不能像这样嵌套初始化列表。