Как стать автором
Обновить

Комментарии 8

> Вспомним псевдо-функцию sizeof(), известную еще со времен C. Эта конструкция выглядит как обычная функция, но на самом деле компилятор вычисляет количество байт, которое занимает в памяти аргумент функции.

OMG… sizeof — это унарный оператор и он совсем не похож на функцию!

ISO/IEC 9899:1999, 6.5.3.4
> The sizeof operator yields the size (in bytes) of its operand, which may be an
> expression or the parenthesized name of a type.
Верно, можно писать «бесскобочные» выражения, типа: return sizeof SomeStruct;
Запись без скобок — наименее значимое отличие. Аргументом sizeof может быть тип (а у функции — нет), sizeof не вычисляет операнды (а выхов функции вычисляет).
Да, да, да. Но без скобок-то прикольно выглядит :)
Полностью все описанное в статье умеет язык D.
Пример с марсианскими локалями несколько неточный. Кто мешает поменять в памяти объект, пусть и описанный константно? И да, если использовать шаблоны (или макросы), то будет предвычислено максимально возможное количество выражений.
> Кто мешает поменять в памяти объект, пусть и описанный константно?
UB в стандарте языка.
Чем-то всё описанное напоминает специализацию программ. Дело Футамуры-Турчина живёт и даже начинает становиться нужным на каждый день!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации