Оператор countof
От: x-code  
Дата: 08.03.19 17:25
Оценка: -1
Представьте себе оператор countof (по аналогии с sizeof), который возвращает количество элементов в какой-то составной сущности.
Для массивов в С/С++ этот оператор часто реализуют в виде макроса
#define _countof(array) (sizeof(array) / sizeof(array[0]))

Но кроме массивов, есть еще много составных сущностей в разных языках программирования.

И вот тут начинаются вопросы. А что считать элементами структуры, класса и т.д.?
Для примитивных типов логично чтобы этот оператор возвращал ноль.
Для перечислений — количество элементов в перечислении (это бывает полезно).

Для структур и классов... тут начинается самое интересное.
С одной стороны, можно подсчитывать количество именованных полей данных.
С другой — количество имен внутри пространства имен, образуемого классом. А ведь там могут быть и вложенные классы, и статические поля, и методы, и статические методы, и всякие свойства, и т.д. Еще — как учитывать поля родительских классов при наследовании (ИМХО учитывать). Еще — учитывать ли скрытые поля, генерируемые компилятором (ИМХО тоже учитывать).
То есть в это количество будут входить получаются совершенно разные сущности.
Тем ни менее, при наличии развитой рефлексии и макросов времени компиляции такой оператор мог бы быть полезен.

В общем, я иногда задумываюсь над тем, как бы мог быть реализован подобный оператор. Интересно ваше мнение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.