首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • [STL高手请入]__STL_CLASS_REQUIRES(_Tp, _Assignable);到底由谁来 实现? [已结贴,结贴人:visame]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • visame
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 01:24:09 楼主
    C/C++ code
    __STL_CLASS_REQUIRES(_Tp, _Assignable);//这句频繁出现 可是整个STL源代码中似乎没有有意义的定义 下面是 __STL_CLASS_REQUIRES的定义: // Some compilers lack the features that are necessary for concept checks. // On those compilers we define the concept check macros to do nothing. #define __STL_REQUIRES(__type_var, __concept) do {} while(0) #define __STL_CLASS_REQUIRES(__type_var, __concept) \ static int __##__type_var##_##__concept 这个__STL_CLASS_REQUIRES什么也没有干,仅仅是定义了一个int型常量 // Use this macro inside of template classes, where you would // like to place requirements on the template arguments to the class // Warning: do not pass pointers and such (e.g. T*) in as the __type_var, // since the type_var is used to construct identifiers. Instead typedef // the pointer type, then use the typedef name for the __type_var. #define __STL_CLASS_REQUIRES(__type_var, __concept) \ typedef void (* __func##__type_var##__concept)( __type_var ); \ template <__func##__type_var##__concept _Tp1> \ struct __dummy_struct_##__type_var##__concept { }; \ static __dummy_struct_##__type_var##__concept< \ __concept##_concept_specification< \ __type_var>::__concept##_requirement_violation> \ __dummy_ptr_##__type_var##__concept 这个定义也没有什么意义。光是定义,实现在哪里?没有搜索到。 下面是__STL_CLASS_REQUIRES_出现的一个例子: template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > class vector : protected _Vector_base<_Tp, _Alloc> { // requirements: _STL_CLASS_REQUIRES(_Tp, _Assignable);//这句频繁出现 可是整个STL源代码中似乎没有有意义的定义
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • taodm
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 5

      3

    发表于:2008-08-21 08:46:241楼 得分:20
    google "concept_checking"
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved