Annex C (informative) Compatibility [diff]

C.2 C++ and ISO C++ 2003 [diff.cpp03]

C.2.7 Clause [temp]: templates [diff.cpp03.temp]

[temp.param]
Изменить: Удалить export.
Обоснование: Нет консенсуса по реализации.
Влияние на исходную функцию: действительное объявление C ++ 2003, содержащееся export в этом международном стандарте, неправильно сформировано.

[temp.arg]
Изменение: убраны требования к пробелам для прямоугольных скобок вложенного закрывающего шаблона.
Обоснование: считается постоянным, но незначительным раздражением. Псевдонимы шаблонов, представляющие типы, не относящиеся к классам, усугубят проблемы с пробелами.
Влияние на исходную функцию: изменение семантики четко определенного выражения. Допустимое выражение C ++ 2003, содержащее правую угловую скобку («>»), за которой сразу следует другая правая угловая скобка, теперь можно рассматривать как закрывающие два шаблона. Например, следующий код действителен в C ++ 2003, потому что «>>» является оператором сдвига вправо, но недопустим в этом международном стандарте, поскольку «>>» закрывает два шаблона.

template <class T> struct X { };
template <int N> struct Y { };
X< Y< 1 >> 2 > > x;

[temp.dep.candidate]
Изменение: разрешить зависимые вызовы функций с внутренней связью.
Обоснование: чрезмерно ограничены, упрощают правила разрешения перегрузки.
Влияние на исходную функцию: действующая программа на C ++ 2003 может получить результат, отличный от этого международного стандарта.