Здравствуйте, rg45, Вы писали:
R>Ну как раз вот это и хреново, поскольку самым нормальным решением был бы переход от конкретных типов к концептам.
R>Ну а с озвученными ограничениями:
R>R>template <typename T>
R>T& lvalue(T&& t) {
R> return t; // На C++23 не проканает - нужно будет использовать forward<T&>(t)
R>}
R>foo(lvalue(42));
R>
Ничего не понял. У меня задача не получить lvalue из чего угодно, а сгенерировать временный lvalue-объект, уникальный для каждого вызова. То есть, чтобы было что-то наподобие
foo(discard<int>())
Но в идеале без <int> (хотя это вряд ли достижимо без граблей) и с минимальным оверхедом по синтаксису и производительности.