【问题标题】:Why should we overload forwarding constructors for the case of initializer_list? [duplicate]为什么我们要为 initializer_list 的情况重载转发构造函数? [复制]
【发布时间】:2016-12-08 17:04:11
【问题描述】:

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)

最后一个重载有什么好处?

【问题讨论】:

  • 抱歉关闭;我以为你问的是不同的东西。

标签: c++ c++17


【解决方案1】:

是为了让你这样做:

 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});

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2020-06-05
    • 2012-09-15
    • 2015-03-20
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多