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)
最后一次超载的好处是什么?
答案 0 :(得分:4)
允许你这样做:
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});