Совершенно полный ответ, но я возьму ответ @Johannes, так как он объясняет немного больше о позднем разборе. +1 хотя. :)
т вопросАскер имеет следующую функцию:Почему не
template<typename ITER>
bool nextPermutation(ITER start, ITER end)
{
return nextPermutation(start, end, std::iterator_traits<ITER>::iterator_category());
}
необходимо доtypename
? Я думал, что это было необходимо для вложенных типов шаблона, если шаблон зависит от самого параметра шаблона? GCC, кажется, поддерживает мою идею, так как она не компилируется под обоимиstd::iterator_traits
4.3.4 а также4.5.1требуя, Несмотря на это, он все равно прекрасно компилируется как в Visual Studio 2008, так и в 2010 году.typename
Это просто еще одно расширение / ошибка Visual Studio, о которой я не знаю?
Или это на самом деле можно сделать вывод, что
является либо типом, либо функцией, потому что за ней следует пара круглых скобокiterator_category
? (Смотрите сообщения @ DeadGM()
начиная здесь.) Так это может быть на самом деле ошибка в GCC?В дополнение к перечисленным опциям (конструктор и функция),