问题标签 [uniform-initialization]

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.

0 投票
1 回答
180 浏览

c++ - C++11 统一初始化和函数重载

简单的程序:

为什么叫叮当f((const char*)nullptr)?我已经预料到编译器会发出关于模糊调用的警告。

0 投票
2 回答
151 浏览

c++ - 模板代码中的统一初始化

0 投票
1 回答
1168 浏览

c++ - C ++:使用花括号来防止分配期间变窄

我熟悉使用花括号/初始化器列表来防止在初始化变量时变窄,但是在为变量赋值时使用它也是一种好习惯吗?

例如

是否有理由不使用花括号进行赋值?

0 投票
2 回答
671 浏览

c++ - c++11 统一初始化不适用于“g++ -std=c++0x”

我有一个声明这个公共方法的类:

它使用统一初始化(这里只是{}),这是 c++11 的一个特性。编译时这不会给我带来任何问题clang++ -std=c++11。但是当我使用时,g++ -std=c++0x我得到了这个:

该选项不是-std=c++0x应该为我带来 c++11 支持吗?

使用标准 c++ 声明方法时,编译器不会给我任何错误,如下所示:

我在 Ubuntu 12.04 上使用 g++ 4.6

0 投票
3 回答
258 浏览

c++ - 转发参数时应该使用 () 还是 {}?

我有以下课程:

我想像这样向它转发参数:

如果我替换{}()输出1 1 2而不是2 1 1.

哪个对我的班级最有意义?

0 投票
2 回答
246 浏览

c++ - 为什么 std::initializer_list 不存在 std::make_unique 等重载?

请参阅转发参数时应该使用 () 还是 {}?. foo是一个std::vector克隆。

在 N4140 中,unique.ptr.create std::make_unique被指定为:

template <class T, class... Args> unique_ptr<T> make_unique(Args&&... args);

  • 备注T:除非不是数组,否则此函数不应参与重载决议。

  • 回报unique_ptr<T>(new T(std::forward<Args>(args)...))

这意味着实现需要使用()而不是{}初始化对象。例如,以下

输出312而 if {}(inside std::make_unique) 被使用211将被输出。因为初始化器列表无法推导出来,所以std::initializer_list必须显式传递才能得到后者的结果。问题是,为什么不提供这样的重载?

输出211

我不认为“您可以自己编写”或“避免使标准臃肿”的原因是很好的理由。提供这种过载有什么缺点吗?

0 投票
0 回答
88 浏览

c++ - std::move 上发生不需要的转换

为什么编译器认为我正在尝试将以下代码中Container的类型对象转换为类型对象?MoveTest为什么将大括号构造函数转发给move_things变量?替换{}()当然可以解决问题

我得到的错误如下

这是否意味着统一初始化语法不再是任何带有std::array?

我使用的编译器和版本是

0 投票
2 回答
4882 浏览

c++ - 具有 std::array 对象的类,没有默认构造函数

所以让我们假设我有以下课程

我有另一个类,它有一个类型数组NoDefaultConstructor和其他成员

如何在构造函数中初始化数组Wrapper(可能在初始化列表中使用std::intializer_list)?

更具体地说,我可以将参数传递给初始化器列表中的数组构造函数Wrapper以获得类似于以下的构造的唯一方法是什么?我正在考虑这样做,因为数组的大小将来可能会改变。

0 投票
2 回答
1727 浏览

c++ - C++ - 带有 std::string 的统一初始化器

我正在尝试使用 C++ 字符串类的统一初始化程序。下面是代码:

输出将是:

这让我摸不着头脑。为什么str2不能达到预期的效果str3

0 投票
1 回答
625 浏览

c++ - 使用可变参数模板进行统一初始化

我有一个 POD ChParam,它是可变参数模板函数中的一个参数set。我想在花括号中传递给函数参数(构造函数参数)p.set({ Param::D, 1000.f }, { Param::p, 2000.f })。并认为将隐式调用构造函数并ChParam创建对象。但这是不可能的,我应该明确地创建一个对象a.set(ChParam{ Param::D, 1000.f }, ChParam{ Param::p, 2000.f });

是否有可能以某种方式使用该变体p.set({ Param::D, 1000.f }, { Param::p, 2000.f })