Почему это отклоняет перечисление? - PullRequest
3 голосов
/ 06 октября 2010

Почему этот код не работает?

#include <algorithm>
int main() {
  int a[10];
  enum { a_size = sizeof a / sizeof *a };
  std::fill(a, a + a_size, a_size);
}

G ++ 4.1.2 и 4.4.3:

В функции 'int main ()':
Строка 5: ошибка: нет соответствующей функции для вызова функции 'fill (int [10], int *, main () :: )'

Допустим ли этот код C ++ 0x?

1 Ответ

2 голосов
/ 06 октября 2010

std :: fill параметризован по типу аргумента объекта;он не требует аргумента Iterator :: value_type.Таким образом, как говорит In silico, C ++ 03 не может создать экземпляр шаблона с локальным типом.

Однако в C ++ 0x вы можете использовать локальные типы для создания экземпляров шаблонов, поскольку они получают внешниесвязь.

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