~ tilde
` back quote or grave accent or back tic
! exclamation point or bang or pling
@ at sign
# pound sign or hash sign or octothorp
$ dollar sign
% percent sign
^ circumflex or caret
& ampersand or and sign
* asterisk, splat, or star
( left parenthesis
) right parenthesis
- dash or minus sign
_ underscore or underline
+ plus sign
= equal sign
{ left curly bracket or left brace
} right curly bracket or right brace
[ left square bracket
] right square bracket
| vertical bar or pipe sign
\ back slash
: colon
; semi-colon
" quotation marks or double quotes
' apostrophe or single quote
< left angle bracket or less than sign
> right angle bracket or greater than sign
, comma
. period or dot
? question mark
/ slash or forward slash
template<class T> class Array;
Array<int> ai; // <-- I can only say this is instantiation
找来一个例子,
template <typename T>
class vector
{
// accessor functions and so forth
private:
T* vec_data; // we'll store the data as block of dynamically allocated
// memory
int length; // number of elements used
int vec_size; // actual size of vec_data
};
如果T 是bool 类型,上面的例子变成
template <typename T>
class vector
{
// accessor functions and so forth
private:
bool* vec_data; // we'll store the data as block of dynamically allocated memory
int length; // number of elements used
int vec_size; // actual size of vec_data
};
所以这个变成就存在问题, 我们一般写成
unsigned int *vector_data; 来代替bool数值的存储
所以就需要specialiase 这个template
template <>
class vector <bool>
{
// interface
private:
unsigned int *vector_data;
int length;
int size;
};