Почему это определение вектора shared_ptr может пройти проверку компилятором? - PullRequest
0 голосов
/ 10 января 2012

Я видел следующее определение в устаревшем коде:

std::vector<boost::shared_ptr<ClassNameAAA>> vecClass;

Я могу скомпилировать его с VS2008 без проблем.

Вопрос > Насколько я понимаю, вместо этого следует использовать следующую строку:

std::vector<boost::shared_ptr<ClassNameAAA> > vecClass;

                                           ^ Add a space here  

Я прав в этом? Если есть, то почему VS2008 позволяет это?

Спасибо

Ответы [ 2 ]

4 голосов
/ 10 января 2012

Это одно из нескольких расширений MS.

Я прав?

Да, ваше понимание верно. >> будет обрабатываться как оператор сдвига вправо.

Однако C ++ 11 поддерживает прямоугольные скобки .


1 голос
/ 10 января 2012

MSVC ++ 2008 может анализировать это из-за расширения языка.

Многие компиляторы имеют расширения для функций, которые в конечном итоге становятся частью языка.Теперь в новом стандарте C ++ 11 требуется возможность анализа вложенных объявлений шаблонов без пробела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...