Template:cpp/numeric/random/get types

来自cppreference.com
[编辑] [{{purge}}] 模板文档

这是所有 ***/get_types 模板的通用 描述。

***/get_types 模板用于简化 C++ 模板形参的定义。几个关联的 C++ 模板经常有一个行为相同的非成员函数。例如大多数 C++ 容器都有行为大多相同的比较运算符。我们通常想要将这些函数用一个模板表示,以减少维护负担。问题是 C++ 模板接受的函数实参经常会有不同的模板实参,这导致我们需要写一个巨大的 {{#switch: 语句。

此模板通过将那些模板实参定义为变量来解决该问题。

  • {{#var:types}} 包含了类型的长描述(用法:template< {{#var:types}} >)。
  • {{#var:types_short}} 包含了类型的短描述(用法:Type<{{#var:types_short}}>)。
  • {{#var:type_def}} 包含 P2248R8 中添加的默认模板实参(用法:= {{#var:type_def}})。

[编辑] 示例

{{cpp/container/get types|list}}
{{source|
template< {{#var:types}}, class Pred >
typename std::list<{{#var:types_short}}>::size_type
    erase_if( std::list<{{#var:types_short}}>& c, Pred pred );
}}

导致

template< class T, class Alloc, class Pred >
typename std::list<T, Alloc>::size_type
    erase_if( std::list<T, Alloc>& c, Pred pred );