Шаблоны C ++ Угловые скобки Pitfall – Что такое C ++ 11?

В C ++ 11 это синтаксис:

vector<vector> MyMatrix; 

тогда как раньше это должно было быть написано так (обратите внимание на пробел):

 vector<vector > MyMatrix; 

Мой вопрос в том, что такое исправление, которое стандарт использует для первой версии?

Может ли быть так же просто, как сделать > токен вместо >> ? Если это не так, что не работает с этим подходом?

Я считаю, что такие формы, как myTemplate>3 > являются проблемой, поскольку вы можете устранить их, выполнив myTemplate>3)> .

Он исправляется путем добавления специального случая к правилам синтаксического анализа при анализе аргументов шаблона.

C ++ 11 14.2 / 3: при анализе списка шаблонов-аргументов первый не-вложенный > берется как конечный разделитель, а не оператор большего размера. Аналогично, первый не-вложенный >> рассматривается как два последовательных, но отличных > токена, первый из которых берется как конец списка шаблонов-аргументов и завершает идентификатор шаблона .

  • Ошибка «Undefined symbols» с компоновщиком простого шаблона
  • Что именно «нарушено» с помощью двухфазного экземпляра шаблона Microsoft Visual C ++?
  • Являются ли шаблоны C ++ просто маскируемыми?
  • Как создать функцию шаблона внутри classа? (C ++)
  • Вывод первого аргумента шаблона с другими параметрами шаблона по умолчанию
  • Как достичь «виртуальной функции шаблона» в C ++
  • перегрузка оператора друга << для шаблона classа
  • Как ссылаться на ресурс CSS / JS / image в шаблоне Facelets?
  • Как я могу проверить, является ли тип экземпляром данного шаблона classа?
  • Использование SFINAE для проверки глобального оператора <<?
  • Как определить, существует ли конкретная переменная-член в classе?
  • Давайте будем гением компьютера.