gpt4 book ai didi

c++ - std::optional 构造函数中的默认模板参数

转载 作者:行者123 更新时间:2023-12-01 22:50:14 26 4
gpt4 key购买 nike

std::optional 具有以下构造函数:

template < class U = T >
constexpr optional( U&& value );

这里的问题是:为什么模板参数U默认为类型T?如果简单地将构造函数更改为以下内容会发生什么:

template < class U /* = T */>
constexpr optional( U&& value );

最佳答案

如果你给它一个初始化列表(它没有类型,所以不能为 U 推断类型),它会初始化一个 T 临时的。

例如:

std::optional<std::vector<int>> opt({1, 2, 3});
// No type deduced for `U`, defaults to `std::vector<int>`

struct X {
int a, b;
};
std::optional<X> opt({.a = 1, .b = 2});
// Same here

关于c++ - std::optional 构造函数中的默认模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74526201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com