Какие идентификаторы пространства имен есть в библиотеках Boost и Qt? - PullRequest
1 голос
/ 27 ноября 2011

Я недавно начал использовать boost и Qt. Я хотел бы знать, все ли библиотеки Boost (заголовки) заключены в одном пространстве имен: Boost? Или есть и другие пространства имен?

Тот же вопрос для Qt, похоже, что у библиотек Qt вообще нет пространств имен? Итак, я начал собирать Qt с этими флагами:

configure -shared -debug-and-release -ltcg -qtnamespace qt nmake

Это нормально?

Ответы [ 3 ]

1 голос
/ 27 ноября 2011

В общем, да - все объявления надстройки находятся в глобальном ::boost пространстве имен.

Однако я знаю одно исключение:

Заполнители выражений связывания _1, _2 и т. Д. Находятся в глобальном «анонимном» пространстве имен, и поэтому на них правильно ссылаются как:

boost::bind(&f, ::_1, ::_2);

Обратите внимание, что эти заполнители не имеют внешней связи и являются статическими (локально для единицы перевода)

1 голос
/ 27 ноября 2011

Я часто использовал boost::matrix::ublas, но у boost много пространств имен. Вы можете запустить варианты команды в конкретном подкаталоге boost, о котором вы заботитесь:

grep namespace * | sed -e 's/.*namespace//' -e 's/\/\/.*//' -e 's/ *{.*//' | sort | uniq

Ваш вопрос обычно должен звучать так: какие пространства имен подходят для использования в моем текущем проекте? То есть какие пространства имен выглядят полезными, но на самом деле они являются внутренним стимулом.

Как правило, пользователям не нужно ничего внутри пространств имен детализации Boost, но вы найдете и другие пространства имен, используемые для деталей реализации. boost::math::tr1 ничего не делает, кроме как импортирует, например, обычные математические функции.

0 голосов
/ 27 ноября 2011

Да, библиотеки Boost обычно помещают свои вещи в boost пространство имен или его подпространства.Некоторые могут определять глобальные символы, но документация скажет вам, если это так.

Использование пространств имен Qt очень ограничено.Он предпочитает ставить все свои символы перед Q или Qt, хотя он использует Qt пространство имен для некоторых идентификаторов и, возможно, для некоторых других.

...