Вызов конструктора является предварительным выражением

В С ++ стандарт можно найти примеры выражений 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 Вот.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]