Re[3]: Аналог "discarding _" для С++
От: so5team https://stiffstream.com
Дата: 30.06.25 07:07
Оценка: 4 (1) +1
Здравствуйте, Went, Вы писали:

W>Ничего не понял. У меня задача не получить lvalue из чего угодно, а сгенерировать временный lvalue-объект, уникальный для каждого вызова. То есть, чтобы было что-то наподобие

W>
W>foo(discard<int>())
W>

W>Но в идеале без <int> (хотя это вряд ли достижимо без граблей) и с минимальным оверхедом по синтаксису и производительности.

Самое простое, что сразу приходит в голову:
template<typename T>
struct discarding_arg
{
    T _tmp;

public:
    operator T&() &&
    {
        return _tmp;
    }
};

void f(int & i) {
    i = 0;
}

int main()
{
    f(discarding_arg<int>{});
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.