首页 > 源码分享, 程序人生 > c++ template特化小trick

c++ template特化小trick

前几天在看boost/asio代码的时候,遇到一个奇怪的语法,后查c++ std文档,发现是template特化过程中一个小小的trick,特做此记录,分享给遇到同样问题的朋友,下面先看例子:

下面是c++ std 243页中的解释:
When the name of a member template specialization appears after . or -> in a postfix-expression, or after nested-name-specifier in a qualified-id, and the postfix-expression or qualified-id explicitly depends on a template-parameter, the member template name must be prefixed by the keyword template. Otherwise the name is assumed to name a non-template.
上面的解释大概意思是,在以下几种情况时,成员模板函数前必须加template关键字:

  • 1. 成员模板函数的特化出现在后缀表达式中.或者->的后面,且后缀表达式显式地依赖模板参数时(与第一个例子对应)
  • 2. 成员模板函数的特化出现在嵌套的名字修饰符中,且名字修饰符显式地依赖模板参数时(与第二个例子对应)
    1. 2011年4月14日16:24 | #1

      这么专业啊,只能稍微看懂一点~~

    1. 本文目前尚无任何 trackbacks 和 pingbacks.
    您必须在 登录 后才能发布评论.