Вложенные шаблоны против оператора сдвига - PullRequest
5 голосов
/ 24 апреля 2011

Я много читал о том, что нужно знать >> как конец вложенного шаблона и >> как оператор сдвига ...

Теперь я попробовал его в моем MSVS2010, и никаких проблем не возникало.

std::map<int, std::pair<int, int>> m;

Этот код работает именно так, как я хочу (карта пар), но я должен получить ошибку о >>

Компилятор умнее в наши дни?

Ответы [ 4 ]

6 голосов
/ 24 апреля 2011

Будьте осторожны, так как ранее хороший код C ++ 03 может не работать с компиляторами, поддерживающими эту функцию.

MyArray< MyArray<int, 16 >> 2>, 5 > arrayInst;

Это будет исправлением:

MyArray< MyArray<int, (16 >> 2)>, 5 > arrayInst;
6 голосов
/ 24 апреля 2011

MSVC ++ 2010 поддерживает функцию C ++ 0x Прямоугольные скобки

4 голосов
/ 24 апреля 2011

Этот код работает именно так, как я хочу (карта пар), но я должен получить ошибку о >>

C ++ 0x это исправило.Так что, если вы не получаете никакой ошибки с MSVS2010, то это неудивительно, поскольку MSVS2010 реализовал некоторые функции C ++ 0x.

Кроме того, даже с C ++ 03 многие компиляторы обрабатывают такие случаи,хотя и не требуется стандартом (2003).

3 голосов
/ 24 апреля 2011

C ++ 0x теперь поддерживает этот синтаксис без ошибок.Компиляторы уже начали реализовывать большинство этих функций, поэтому неудивительно, что последний компилятор Microsoft C ++ поддерживает его.

...