Информация об изменениях

Сообщение Re[16]: C++ illegal instruction от 20.08.2025 18:09

Изменено 20.08.2025 18:10 rg45

Re[16]: C++ illegal instruction
Здравствуйте, B0FEE664, Вы писали:

R>>А тут уж без вариантов будет функция — не шаблон, не перегрузка и не функциональный объект. Вот если написать std::sin и std::cos, тогда получится облом.

BFE>Это почему?
BFE>Неужели старый трюк ухода от макроса
BFE>
BFE>a = (std::min)(a, b);
BFE>b = (std::max)(a, b);
BFE>

BFE>больше не легален?

Конечно легален. Только ты походу не совсем понял, о чём мы вели речь. А речь вот о чем: допустим у нас есть выражение, имеющее вид функционального вызова f(...). Вопрос: в каких случаях имя f преобразуется в указатель на функцию? Из std::min и std::max ты не получишь указатели на функции, хоть со скобками, хоть без, потому что это имена шаблонов, да ещё и перегруженных. Впрочем сишные min/max так же не преобразуются в указатели на функции, т.к. это имена макросов. А вот сишные sin/cos преобразуются.
Re[16]: C++ illegal instruction
Здравствуйте, B0FEE664, Вы писали:

R>>А тут уж без вариантов будет функция — не шаблон, не перегрузка и не функциональный объект. Вот если написать std::sin и std::cos, тогда получится облом.

BFE>Это почему?
BFE>Неужели старый трюк ухода от макроса
BFE>
BFE>a = (std::min)(a, b);
BFE>b = (std::max)(a, b);
BFE>

BFE>больше не легален?

Конечно легален. Только ты походу не совсем понял, о чём мы вели речь. А речь вот о чем: допустим у нас есть выражение, имеющее вид функционального вызова f(...). Вопрос: в каких случаях имя f преобразуется в указатель на функцию? Из std::min и std::max ты не получишь указатели на функции, хоть со скобками, хоть без, потому что это имена шаблонов, да ещё и перегруженных. Впрочем сишные min/max также не преобразуются в указатели на функции, т.к. это имена макросов. А вот сишные sin/cos преобразуются.