Почему в C ++ 0x есть оператор sizeof ...? - PullRequest
9 голосов
/ 05 мая 2010

Я видел, что @GMan реализовал версию sizeof... для шаблонов с переменными параметрами, которая (насколько я могу судить) эквивалентна встроенной sizeof.... Разве это не противоречит второму принципу: предпочитают библиотеки языковым расширениям ?

Ответы [ 2 ]

7 голосов
/ 05 мая 2010

Из Вариадические шаблоны (Редакция 3) (N2080 = 06-0150) , стр. 6:

Хотя это не является строго необходимым (мы можем реализовать count без этой функции), проверка длины пакета параметров является обычной операцией, которая заслуживает простого синтаксиса . Кроме того, эта операция может стать необходимой по причинам проверки типов, когда шаблоны с переменными числами объединяются с концепциями; см. раздел 3.3.

(Раздел 3.3 говорит о понятиях, которые сейчас неактуальны.)

4 голосов
/ 05 мая 2010

sizeof... это просто сахар, я думаю.

sizeof действительно является ядром языка, как и ..., и хотя функция countof может существовать, у нас уже есть зарезервированные sizeof и ..., поэтому мы могли бы также сделать удобным подсчет таким образом.

Наоборот, если бы sizeof и ... не были зарезервированы, идея добавления такой вещи, вероятно, потерпела бы неудачу, потому что новые ключевые слова, как правило, осуждаются. (Чем меньше, тем лучше.)

...