In this question, the asker has the following function:
template
bool nextPermutation(ITER start, ITER end)
{
return nextPermutation
Visual C++ is well-known not to (fully) support two-phase lookup, which is the underlying reason for why typename
is required in the first place. If the compiler doesn't fully support this, it might not fully parse a template before it is instantiated, by which time it "knows" that std::iterator_traits
is a type. Obviously, this deficiency extends to VC10.
When it comes to typename, I'd trust GCC over VC any day.