gpt4 book ai didi

c++ - 尝试用 pairs 来说明 Perfect Forwarding

转载 作者:行者123 更新时间:2023-11-30 02:30:32 25 4
gpt4 key购买 nike

我想我理解完美转发并采用了正常说明它的代码

template<typename T, typename U>
std::pair<T, U> make_pair_wrapper(T&& t, U&& u)
{
return std::make_pair(std::forward<T>(t),
std::forward<U>(u));
}

int main()
{
std::pair<std::string, int> p1 = make_pair_wrapper("foo", 42);
}

但是我没有编译,说它不能从'std::pair<const char*, int>'转换至 'std::pair<const char (&)[4], int>

我不得不承认我不明白

最佳答案

您忘记传递变量而不是临时变量。此行不正确

pair<string, int> p1 = make_pair_wrapper("foo",42);

Pair 存储 std::stringint,但是你传递给函数 const char*int . const char* 不是 std::string。你可以这样做:

make_pair_wrapper(s, i);

或:

make_pair_wrapper(std::string("foo"), 42);

您必须使用不能省略的临时文件。但是如果你真的想有一种“可变”的感觉,那么你可以延长临时工的生命周期:

const int& i = 42;
const string& s = "foo";

然后,您可以将它们传递给函数(但我不建议这样做)。

关于c++ - 尝试用 pairs 来说明 Perfect Forwarding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512226/

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