Это действительно ужасно глупый вопрос, на который ответ, вероятно, простой "нет", но я собираюсь спросить, если есть, потому что было бы неплохо.
Я могу это сделать, поведение в точности как угодно:
struct A { int x; };
A inc(A a) {
a.x += 1;
return a;
}
inc({ 1 });
когда тот факт, что { 1 }
является временным силом, что он не будет повторно использован, поскольку он оставлен недействительным inc()
(из-за использования конструктора перемещения - пожалуйста, исправьте меня, если я ошибаюсь об этом!).
Но что, если я плохо помню, для чего должен был стоять { 1 }
, поэтому я делаю для него переменную, но я все еще хочу заставить требование, чтобы он не мог использоваться дважды (я пытаюсь сделать его как временный, но названный):
A a = { 1 };
inc(a);
inc(a);
Никакая вариация ссылочного типа для a
не заставит компилятор жаловаться на двойное использование - но конструктор перемещения был исключен a
не временным.
Есть ли решение?