首页 > TAG信息列表 > list-initialization

c – 复制列表初始化是否从概念上调用了复制ctor?

在C 11之前,我们可以通过写A a = 1之类的东西进行复制初始化.这或多或少等于A a = A(1);也就是说,首先创建临时,然后调用复制ctor.无论版本是否复制,这必须是概念上的,并且必须可以访问复制文件. 通过C 11中的列表初始化,我们可以通过写A a = {1,2};来进行复制列表初始化.在我看来,

c – 等号是否会对括号初始化产生影响?例如. ‘T a = {}’vs’T a {}’

以下是在C 11中初始化变量的两种方法: T a {something}; T a = {something}; 我在所有可以想到的场景中测试了这两个,但我没有发现差异. This answer表明两者之间存在细微差别: For variables I don’t pay much attention between the T t = { init }; or T t { init }; styles,

c – return {}和return Object {}之间的区别

这两个功能之间有什么显着差异吗? struct Object { Object(int i) : i{i} { } int i; }; Object f() { return {1}; } Object g() { return Object{1}; } 解决方法:第一个是copy-list-initialization,将选择approriate构造函数(即Object :: Object(int))来构造

使用列表初始化时,C语言是否强制执行编译器优化?

这是source.cpp #include <iostream> struct A { A(int i) : i(i) { std::cout << this << ": A(int)" << std::endl; } A(A const &a) : i(a.i) { std::cout << this << ": A(A const &)" <<

c – 使用大括号的std :: array copy构造

为什么以下代码没有编译: #include <array> struct A { std::array<size_t, 5> i_; A() {} A( A const& a) : i_{ a.i_ } {} }; int main() { A a1; A a2 = a1; return 0; } GCC 4.8.1说 错误:在初始化时无法将’const std :: array’转换为’lon

c – 为什么他们会特殊地使用某些初始化列表而不是对它们进行相同处理?

假设我有一个变量auto x,我想使用大括号初始化初始化为7,简单: auto x {7}; 除了我知道x不是一个整数,而是一个初始化列表本身.为什么?是否有一个特定的原因,委员会将决定auto应该在单个自动值的情况下获取初始化列表,或者他们是否希望我们只是意识到这些不应该一起使用.我似乎无法

c – 模板化封闭的模板化结构的初始化列表

#include <array> #include <vector> #include <cinttypes>

c 11中结构数组的括号初始化

这是我的代码: #include <string> struct A { int a; std::string sa; }; int main() { A arr[3]{}; } 当我使用gcc 4.8.2(在Ubuntu 14.04上)使用-std = gnu 11选项编译它时,我收到以下错误: example.cpp: In function ‘int main()’: example.cpp:11:14: internal