Function template
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
目录 |
[编辑] 说明
模板允许通用的功能设计,对不同类型的工作,而不需要重写多次
原文:
Templates allow generic function design that work on various types, without the need of rewriting it multiple times
[编辑] 语法
[编辑] 宣言
template < template_arguments > function_declaration
|
(1) | ||||||||
export template < template_arguments > function_declaration
|
(2) | (至 C++11) | |||||||
#模板函数声明引用错误:没有找到与
</ref>
对应的<ref>
标签#导出模板函数的声明。这是非常罕见的编译器上实现的,不应该使用的函数体可以被定义在一个单独的文件引用错误:没有找到与
</ref>
对应的<ref>
标签[编辑] 参数
class identifier | (1) | ||||||||
typename identifier | (2) | ||||||||
integral_type identifier | (3) | ||||||||
class identifier = type_name
|
(4) | (C++11 起) | |||||||
typename identifier = type_name
|
(5) | (C++11 起) | |||||||
integral_type identifier = const_expr
|
(6) | (C++11 起) | |||||||
在函数内部identifier可以用来作为一种类型
3) 原文:
Inside the function identifier can be used as a type
在函数内部identifier可以用来作为一个常数
4-6) 原文:
Inside the function identifier can be used as a constant
默认参数
[编辑] 专业化
本章尚未完成 原因:partial specialization |
template <> ret function_name < template_args > ( func_args ) body
|
|||||||||
专业化改变了特定的模板参数的模板函数的实现
原文:
Specialization changes the implementation of the template function for specific template parameters
[编辑] 呼叫
function_name < template_args > ( func_args )
|
(1) | ||||||||
function_name ( unambiguous_func_args )
|
(2) | ||||||||
#显式模板参数,如果func_args不完全匹配的类型在模板中声明的template_args通常的铸造会发生
原文:
# Explicit template arguments, if func_args don't match perfectly with the types as in the template declaration (with the given template_args) the usual casting will occur
#隐式模板参数,推导出函数的参数。可以毫不含糊
原文:
# Implicit template arguments, deduced from the function arguments. No ambiguity can be present
本章尚未完成 原因:better explanation/example |
[编辑] 为例
本章尚未完成 |
template<typename T> struct S { template<typename U> void foo(){} }; template<typename T> void bar() { S<T>s; s.foo<T>(); // error: < parsed as less than operator s.template foo<T>(); // OK }
[编辑] 见也
[编辑] 注释
原文: