В С ++ стандарт можно найти примеры выражений prvalue:
«prvalue
Следующие выражения являются выражениями prvalue:
литерал (кроме строкового литерала), такой как 42, true или nullptr;
вызов функции или перегруженное выражение оператора не возвращаемого типа, такого как str.substr (1, 2), str1 + str2 или it ++;
…»
Это где такое выражение, как T()
(вызов конструктора) будет идти?
Есть ли другое название для таких выражений?
Хотя частный случай конструктора по умолчанию меня немного озадачивает, это считается выражение выражения, который немного ниже в списке:
- приведение выражения к не ссылочному типу, такому как
static_cast<double>(x)
,std::string{}
, или же(int)42
;
Хотя идея преобразования ничего такого своеобразно, T()
синтаксис действительно рассматривается как форма № 4 Вот.
Других решений пока нет …