Используется ли функция main () odr? - PullRequest
0 голосов
/ 13 января 2019

Используется ли main() функция odr ? Например, в простой программе, подобной этой:

int main()
{
}

1 Ответ

0 голосов
/ 13 января 2019

Нет, это не так. Не в вашей простой программе.

[basic.def.odr]

3 Функция, имя которой отображается как потенциально оцененная выражение используется odr, если это уникальный результат поиска или выбранный член набора перегруженных функций ([basic.lookup], [over.match], [over.over]), если это не чисто виртуальная функция и либо его имя явно не определено, либо выражение образует указатель на член ([expr.unary.op]).

main не появляется в потенциально вычисленном выражении, поэтому оно не используется в odr. Кроме того, мы должны учитывать следующее:

[basic.start.main]

3 Функция main не должна использоваться в программе.

Является ли это простым вызовом main или любым другим способом, может быть спорным, но оно, безусловно, ограничивает ваши возможности odr-use main в любой программе.

При анализе odr-использования стоит иметь в виду, что программа использует odr-объекты (или не использует их). Внешние силы (такие как реализация, использующая main в качестве точки входа) не подлежат обсуждению.

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