gpt4 book ai didi

c++ - 我怎样才能从我的专用 std::max 中返回一个临时的?

转载 作者:行者123 更新时间:2023-11-27 23:33:08 24 4
gpt4 key购买 nike

您好!我想将 std::max 专门化为平台特定的分数类型。

我想使用的系统特定 max 的原型(prototype)如下所示:

fract builtin_max(fract a, fract b);

我对专用 std::max 的想法如下所示:

template <> inline
const fract& std::max<fract>(const fract& a, const fract& b) {
return builtin_max(a, b);
}

但是,编译器会提示返回对本地临时对象的引用,这是可以理解的。有什么办法可以解决这个问题吗?

最佳答案

您可以按值返回结果。那么RVO很可能会发生。最后你会得到你想要的行为。

我会将 builtin_max 声明更改为

fract builtin_max(const fract& a, const fract& b);

这将有助于编译器识别 RVO 的可能性。

最后,您的 max 将如下所示:

template <> 
fract std::max<fract>(const fract& a, const fract& b) {
return builtin_max(a, b);
}

关于c++ - 我怎样才能从我的专用 std::max 中返回一个临时的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3333976/

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