63得票1回答
从初始化列表初始化std::tuple

我在想元组是否可以通过初始化列表来进行初始化(更准确地说,通过初始化列表的初始化列表)?考虑到元组的定义: typedef std::tuple< std::array<short, 3>, std::array<float, ...

28得票1回答
需要包含<initializer_list>的理由是什么?(这是一个提问标题,涉及IT技术相关内容)

来自[dcl.init.list] 模板std::initializer_list没有被预定义;如果在使用std::initializer_list之前未包含头文件&lt;initializer_list&gt;,即使在未命名类型的隐式使用中,程序也是不合法的。 既然编译器已经对std::...

18得票4回答
为什么std :: initializer_list可以不指定大小并且同时在堆栈上分配?

我从这里了解到,std::initializer_list不需要分配堆内存。这让我感到非常奇怪,因为您可以接收一个std::initializer_list对象而无需指定其大小,而对于数组,您总是需要指定大小。虽然这篇文章提到 initializer list 内部实现几乎与数组相同。 我很难...

14得票2回答
标准库中的初始化列表构造函数

像这样的代码:#include &lt;iostream&gt; #include &lt;initializer_list&gt; #include &lt;string&gt; struct A { A() { std::cout &lt;&lt; "2" &lt;&lt; st...

12得票1回答
为什么我们需要一个私有构造函数来定义std::initializer_list?

在标准和C++程序设计语言中,std::initializer_list的建议实现是简单的。这里的“简单”指的是没有什么奇怪的东西。 但在编译器实现std::initializer_list时会变得复杂,例如,GCC拥有一个私有构造函数用于std::initializer_list,并在其上方...

11得票1回答
使用MSVC编译器时,constexpr初始化列表没有产生输出

以下代码在GCC和Clang下编译无警告,并且产生了预期的输出:#include &lt;initializer_list&gt; #include &lt;iostream&gt; constexpr std::initializer_list&lt;std::initializer_li...

9得票2回答
为什么传递字符串时,这个initializer_list使用会出现问题?

我尝试了我的G++版本的C++0x初始化列表实现,但它只输出空行。 #include &lt;initializer_list&gt; #include &lt;iostream&gt; #include &lt;string&gt; int main() { std::initial...

8得票1回答
std::initializer_list什么时候可以是constexpr?

根据cppreference.com的说法,std::initializer_lists具有constexpr constructors和constexpr size methods(自C++14起)。 尽管我使用的编译器似乎同意constexpr初始化列表的大小确实是constexpr的,...

8得票2回答
可变模板参数类型列表的打包扩展到复合类型的初始化列表中——这样做是否合法?

我希望能够将一个可变类型列表“实体化”为相关值的initializer_list。 例如,将包含多个std::integral_constant的std::tuple转换为std::initializer_list{...}。 一般情况下,我想要获取某些复杂类型的initializer_lis...

7得票1回答
相同的clang编译器,使用-std=c++14/-std=c++17编译std::initializer_list程序结果不同。

首先,这是一个好奇的问题,我在现实生活中不会编写这样的代码。 使用 -O3 -std=c++14 和 -O3 -std=c++17 标志时,以下代码的行为不同,在 C++14 中我会得到 bad alloc,我认为是从垃圾 std::string 的复制构造引起的: #include&lt...