bol*_*lov 12 c++ c++17 stdoptional ctad deduction-guide
std::make_通过引入类模板参数推导(除了make_unique和make_shared),所有这些都被 C++17 变得多余。
那么重点是std::make_optional什么?至于我可以告诉它的确切同样的事情扣除导游的std::optional。
有没有std::make_optional比演绎指南更受欢迎的场景?
区别的一个例子是当你想要(无论出于何种原因)制作一个包含可选项的可选项时:
#include <optional>
#include <type_traits>
int main()
{
auto inner=std::make_optional(325);
auto opt2=std::make_optional(inner); // makes std::optional<std::optional<int>>
auto opt3=std::optional(inner); // just a copy of inner
static_assert(std::is_same_v<decltype(opt2), std::optional<std::optional<int>>>);
static_assert(std::is_same_v<decltype(opt3), std::optional<int>>);
}
Run Code Online (Sandbox Code Playgroud)