<分区>
std::optional
提供将参数转发给拥有对象的构造函数的构造函数:
template<class...Args>
optional(in_place_t,Args&&...args)
但它也提供了这个重载:
template<class U,class...Args>
optional(in_place_t,initializer_list<U> l,Args&&...args)
最后一个重载有什么好处?
<分区>
std::optional
提供将参数转发给拥有对象的构造函数的构造函数:
template<class...Args>
optional(in_place_t,Args&&...args)
但它也提供了这个重载:
template<class U,class...Args>
optional(in_place_t,initializer_list<U> l,Args&&...args)
最后一个重载有什么好处?
最佳答案
它允许你这样做:
optional<vector<int>> o(in_place_t, {1, 2, 3, 4, 5});
这比:
optional<vector<int>> o(in_place_t, std::initializer_list<int>{1, 2, 3, 4, 5});
关于c++ - 为什么我们应该为 initializer_list 的情况重载转发构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41044938/