CSDN博客

img jia_xiaoxin

Template parameters (C++ only)

发表于2008/10/3 21:21:00  857人阅读

在C++中有三种模板参数:

在模板参数的声明中即可以使用关键字class也可以使用关键字typename,但是在模板参数的声明中不能指定存储的类型(static 和 auto)

 

1.Type template parameters (C++ only)

Read syntax diagramSkip visual syntax diagramType template parameter 声明语法 
>>-+-class----+--identifier--+---------+-----------------------><
   '-typename-'              '-=--type-'  
identifier 是type的名字.
2.Non-type template parameters (C++ only)

non-type template parameter 的语法声明类似于下面几种形式之一:

  • 整型或枚举
  • 对象或函数的指针
  • 对象或函数的引用
  • 成员指针

被声明为数组或函数的Non-type template parameters 被分别转化为了指针或者函数指针.

template<int a[4]> struct A { };
template<int f(int)> struct B { };

int i;
int g(int) { return 0;}

A<&i> x;
B<&g> y;
 
 

你可以用const 或 volatile限定 non-type template parameter.不能将non-type template parameter 声明为float point, class,或 void type.

Non-type template parameters 不是lvalues.

 

3.Template template parameters (C++ only)

Read syntax diagramSkip visual syntax diagramTemplate template parameter 声明语法  
>>-template--<--template-parameter-list-->--class--+------------+--+------------------+-><
                                                   '-identifier-'  '-=--id-expression-'  

下面是用 template template paramete的一个例子:

template<template <class T> class X> class A { };
template<class T> class B { };
A<B> a;

 

 

 

 

0 0

相关博文

我的热门文章

img
取 消
img