gpt4 book ai didi

c++ - 查找值是否是临时的

转载 作者:太空狗 更新时间:2023-10-29 20:24:10 25 4
gpt4 key购买 nike

我正在尝试创建一个函数来检查参数是否为临时值并返回 bool 值。

我们称之为 isTemp。示例:

int a;
isTemp(a); // this should be false;

isTemp(43); // should be true;

我已经开始使用模板参数来处理这个函数,但是这不起作用,现在我不确定该怎么做:

template <typename T>
bool isTemp(T) { return false; }

template <typename T>
bool isTemp(const T) { return true; }

有什么建议吗?

最佳答案

您可以尝试使用通用引用(在 C++11 中引入)

在 C++ 中,临时值通常由 rvalues 表示(之所以这样称呼,历史上是因为右值可以出现在赋值表达式的右侧),而其他所有内容都被视为 左值(可以放在赋值运算符的两边)。

通用引用可以表示两者,并且根据传递的值,它们将被强制转换为左值引用右值引用,这可以由 std::确定is_rvalue_reference.

这是一个示例代码:

#include <type_traits>
#include <iostream>

template <typename T>
bool isTemp(T&& t) {
return std::is_rvalue_reference<T&&>::value;
}

int f() { return 0; }

int main() {
int a;
std::cout << isTemp(a) << std::endl; // prints 0
std::cout << isTemp(f()) << std::endl; // prints 1
std::cout << isTemp(43) << std::endl; // prints 1
}

关于c++ - 查找值是否是临时的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29367956/

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