Здравствуйте. В C# есть "discarding _", который по сути создаёт временный объект и возвращает для него ref, чтобы принимающая функция, кортеж или выражение могли благополучно в него написать и забыть. Как получить подобное поведение в С++? То есть чтобы некий довольно краткий синтаксис мог быть передан в любую функцию вместо параметра, принимающего не-константную ссылку? Например?
// Что нужно написать вместо ..., чтобы работало нижнее?
void foo(int&);
foo(...);
... = 1;
[x, ...] = get_some_struct();
Очевидно, что напрашивается функция, которая возвращает статическую переменную, объявленную внутри себя. Но в этом случае у нас получится один член на все вызовы, что чревато неожиданным поведением. Также не хотелось бы явно указывать тип аргумента, то есть discard() без <int> в конце, но это не обязательно. Также не хочется ничего на куче создавать без необходимости. Ну и ограничение на стандарт — С++14. Какие могут быть варианты?