Почему обработка выражений параметров шаблона, не относящихся к типу, несовместима в разных компиляторах?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему обработка выражений параметров шаблона, не относящихся к типу, несовместима в разных компиляторах?

Сообщение Anonymous »

Вот что я наблюдал в различных компиляторах. Кажется, есть ошибки компилятора.

Код: Выделить всё

template 
struct X
{ };

int main(void)
{
X 1)> a;       // Works on vc9, works on g++ 4.1.2, works on Comeau 4.3.10.1
X 1)> b;  // Works on vc9, works on g++ 4.1.2, works on Comeau 4.3.10.1
X> 1)> c;      // Works on vc9, works on g++ 4.1.2, works on Comeau 4.3.10.1
X> 1)> d; // Fails on vc9, works on g++ 4.1.2, works on Comeau 4.3.10.1

X 1> e;         // Fails on vc9, works on g++ 4.1.2, fails on Comeau 4.3.10.1
X 1> f;    // Fails on vc9, fails on g++ 4.1.2, fails on Comeau 4.3.10.1
X> 1> g;        // Fails on vc9, works on g++ 4.1.2, fails on Comeau 4.3.10.1
X> 1> h;   // Fails on vc9, works on g++ 4.1.2, fails on Comeau 4.3.10.1
}
Почему такое несоответствие? Что разрешено/запрещено стандартом? Такое поведение также является причиной синтаксической ошибки при использовании BOOST_AUTO в vc9. Мне кажется, Комо поступает правильно, отвергая все выражения без скобок.

Подробнее здесь: https://stackoverflow.com/questions/159 ... ross-compi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»