gpt4 book ai didi

c++ - 如何决定 constexpr 是否返回引用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:01 25 4
gpt4 key购买 nike

如果您有一个函数,if constexpr () 决定做一件事或另一件事,如何在一种情况下返回左值而在另一种情况下返回右值?

以下示例在第一个用法行中未编译,因为返回类型 auto 不是引用:

static int number = 15;

template<bool getref>
auto get_number(int sometemporary)
{
if constexpr(getref)
{
return number; // we want to return a reference here
}
else
{
(...) // do some calculations with `sometemporary`
return sometemporary;
}
}

void use()
{
int& ref = get_number<true>(1234);
int noref = get_number<false>(1234);
}

最佳答案

how to return an lvalue in one case and an rvalue in the other case?

我想你可以试试 decltype(auto) 和几个括号

template<bool getref>
decltype(auto) get_number() // "decltype(auto)" instead of "auto"
{
if constexpr(getref)
{
return (number); // not "number" but "(number)"
}
else
{
return 123123; // just a random number as example
}
}

关于c++ - 如何决定 constexpr 是否返回引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301615/

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