Может ли присвоение auto иметь тип, отличный от результата выражения r-value? - PullRequest
1 голос
/ 26 февраля 2020

Обратите внимание на следующее:

auto tmp = a + b;

Где a и b - определяемые пользователем типы, которые возвращают прокси-объект для задержки оценки (это требуется для более сложных выражений, чем показано).

Есть ли способ, чтобы результат в этом случае был чем-то другим, тип результата перегрузки оператора?

Мне интересно, возможно ли неявный оператор преобразования со спецификатором r / l-value T operator() && здесь может пригодиться, но я не совсем понимаю, как.

Я ценю, что этот вопрос расплывчатый и не содержит подробностей, но я думаю, что то, что я хочу, концептуально очень просто.

Я могу придумать, как это сделать, если я не хочу делать auto tmp = ..., а скорее some_concrete_type tmp = ..., но использовать прокси в конструкторе.

1 Ответ

3 голосов
/ 26 февраля 2020

auto всегда будет выводить свой тип из инициализатора. Преобразование не будет применяться, если вы сами не сделаете это (кроме того факта, что оно удаляет ссылку на верхний уровень и квалификации cv ).

Если ваше выражение инициализации приводит к некоторому прокси вместо конкретный тип, то это то, к чему auto будет выведен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...