如果您有一个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);
}