Re[2]: VC++ 8.0 и Template definition non-dependent names lo
От: Warturtle  
Дата: 16.07.06 09:53
Оценка: 13 (3)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>igna,


>> Похоже, что VC++ 8.0 неверно компилирует пример из стандарта:


ПК>Да, VC++8 не поддерживает two phase name lookup.


>> Вроде бы при тестировании компилятора работниками Microsoft примеры из стандарта должны были быть опробованными не в последнюю очередь. Потому может быть поведение VC++ 8.0 в данном случае вовсе не ошибка, а намеренное отклонение от стандарта, например для соответствия предполагаемому изменению стандарта в будущем?


ПК>И ошибка, и, в некотором роде, позиция, заключающаяся в том, что поведение VC++, с их точки зрения, логичнее стандартного, соответственно, приоритет ошибки при учете высокой цены исправления низкий. Т.е. и на Orcas, насколько я знаю, планов исправлять это нет.


В подтверждение, выдержка из интервью

Host: Herb (Microsoft)
Q: What are current plans as far as becoming compliant wrt two-phase name lookup?

A: That's one of the three things we didn't implement in Everett (the others were enforcing exception specifications and export). Two-phase lookup is related to export, so see also the export answer above. One issue with two-phase lookup is that when we (or any compiler) provide(s) it, we'll have to consider migration for users -- two-phase lookup breaks a LOT of existing code, which is one reason it is not widely implemented in compilers today. (IIRC, EDG supports it in strict mode, Metrowerks supports it but you need to throw -iso_templates on (even -ansi strict isn't enough), and IBM used to support it as an option but no longer does (even as an option). The MW and IBM situations are because of breaking code.) (BTW, I don't know of any other compiler besides those three that does/did support 2-phase lookup. Did I miss any?)

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.