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