![]() |
![]() ![]() ![]() ![]() |
![]() |
Serialization - BOOST_STATIC_WARNINGBoost , ,
Motivationtypedef creates an alias for an existing type. It does not create
a new type that can be used for matching either function or template parameters.
This can be shown by trying to compile the following example.
typedef int a;
void f(int x); // (1) function to handle simple integers
void f(a x); // (2) special function to handle integers of type a
int main(){
int x = 1;
a y;
y = x; // other operations permitted as a is converted as necessary
f(x); // chooses (1)
f(y); // chooses (2)
}
Since typedef doesn't create a new type, this program can't compile to code
that implements its obvious intention.
Использование BOOST_STRONG_TYPEDEF решает эту проблему. #includeПрограмма будет компилироваться и работать, как и ожидалось. ИспользованиеСинтаксисBOOST_STRONG_TYPEDEF был разработан, чтобы быть похожим на стандарт typedef. создаст новый тип «имя», который будет заменяться на оригинальный тип, но все же на отдельный тип. РеализацияBOOST_STRONG_TYPEDEF представляет собой макрос, который генерирует класс, называемый «имя», который обертывает экземпляр своего примитивного типа и предоставляет соответствующие операторы преобразования, чтобы сделать новый тип заменяемым на тот, который он обертывает. © Copyright Robert Ramey 2002-2004. Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресу http://www.boost.org/LICENSE_1_0.txt) Статья Serialization - BOOST_STATIC_WARNING раздела может быть полезна для разработчиков на c++ и boost. :: Главная :: ::
|
||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||||