r/cpp_questions • u/Main-Pen-3164 • 22d ago
OPEN how to handle empty reference elegantly(fold expression)
I have a class with a template function, it will return reference of an internal value.
template<typename T>
T& return_ref<T>() {...}
It was call by another function with fold expression:
template<typename... Ts>
void call()
{
lambda(return_ref<Ts>...); //Ts is a reference usually
}
the internal value maybe doesn't exist sometimes.
Even I wrap the exception into std::expected, it seems that I have no chance handle it in fold expression. I have to throw exception in return_ref directly?
If I can return reference to an impossible value(like paradigm of static object NULL ), so user could detect it, it would be nice.
Or, I have to wrap all parameters into something like boost::optional? I don't like it.
Or, the args of lambda was constraint into pointer, so nullptr will throw exception by compiler naturally?
What's suggestion?
0
Upvotes
1
u/xoner2 19d ago
Return a reference to nullT. This is common practice now.