gpt4 book ai didi

c++ - make_pair 如何隐式推断类型?

转载 作者:太空狗 更新时间:2023-10-29 23:52:35 28 4
gpt4 key购买 nike

众所周知,make_pair 推导类型。这就是它存在并且方便的原因。现在看到这个 example :

std::pair <int,int> foo;
std::pair <int,int> bar;

foo = std::make_pair (10,20);
bar = std::make_pair (10.5,'A'); //ok: implicit conversion from pair<double,char>

现在我想了解上面这行中的推导发生的确切时间:

bar = std::make_pair (10.5,'A');

它是否创建一个对,然后在分配时隐式地将 double 转换为 int 并将 char 转换为 int

最佳答案

它首先创建一个 std::pair<double, char>感谢辅助函数的类型推导 std::make_pair它会创建一对与您传递给它的类型完全相同的类型,无论您稍后将这对类型分配给哪种类型。

然后这个对象被分配给一个std::pair<int,int>这要归功于 templated assignment operator .此运算符基本上允许可分配类型( U1T1U2T2 )内部分配(在您的情况下) doubleint和一个 charint .

该语言没有“预测”将使用表达式的变量类型的功能,这将需要制作 pair<int,int>中间没有这一步。

如果您想避免该步骤,您必须在构造对时明确,这意味着您不应该使用类型推导 std::make_pair而是std::pair的构造函数,它要求您输入显式类型。但是,我怀疑这会因为优化而提高性能。

关于c++ - make_pair 如何隐式推断类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15061271/

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