Chinaunix首页 | 论坛 | 博客
  • 博客访问: 779785
  • 博文数量: 239
  • 博客积分: 60
  • 博客等级: 民兵
  • 技术积分: 1045
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-22 18:25
文章分类

全部博文(239)

文章存档

2019年(9)

2018年(64)

2017年(2)

2016年(26)

2015年(30)

2014年(41)

2013年(65)

2012年(2)

分类: C/C++

2014-02-11 15:53:20

Template arguments   ( ISO/IEC 14882:2011(E)  § 14.3)                                                                    [temp.arg]
  2  In a template-argument, an ambiguity between a type-id and an expression is resolved to a type-id, regardless  of the form of the corresponding  template-parameter.
[ Example:

点击(此处)折叠或打开

  1. // template_argument.cpp
  2. //
  3. #include <iostream>
  4. using namespace std;

  5. template<class T> void f()
  6. {
  7.     cout<<"[template void f()] called\n"<<endl;
  8. }
  9.  
  10. template<int I> void f()
  11. {
  12.     cout<<"[template void f()] called\n"<<endl;
  13. }

  14. class Functor
  15. {
  16. public:
  17.     int operator()(void)
  18.     {
  19.         cout<<"[int Functor::operator()(void)] called\n"<<endl;
  20.         return true;
  21.     }
  22. };

  23. int g()
  24. {
  25.     return true;
  26. }

  27. int main(int argc, char* argv[])
  28. {
  29.     cout<<"running [f();]"<<endl;
  30.     f<int()>(); // int() is a type-id: call the firt template<class T> void f()

  31.     cout<<"running [f();]"<<endl;
  32.     f<Functor()>();

  33.     cout<<"running [f();]"<<endl;
  34.     f<int>();

  35.     cout<<"running [f<1>();]"<<endl;
  36.     f<1>();

  37.     cout.flush();
  38.     return 0;
  39. }

Result:

点击(此处)折叠或打开

  1. running [f<int()>();]
  2. [template<class T> void f()] called

  3. running [f<Functor()>();]
  4. [template<class T> void f()] called

  5. running [f<int>();]
  6. [template<class T> void f()] called

  7. running [f<1>();]
  8. [template<int I> void f()] called

— end example ]
     There  is  no  such  ambiguity  in  a  default  template-argument  because  the  form  of  the  template-parameter  determines  the allowable forms of the  template-argument.

阅读(1039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~