命名?模板,函数中的参数

The*_* do 7 c++ c++11

即将推出的C++ 0x标准中是否有关于模板和/或函数中命名参数的更新?例如,我希望能够写下以下内容:

先前已定义:

template<class T = int,class Policy_1, class Policy_2>
class X
{
};
Run Code Online (Sandbox Code Playgroud)

然后在主要:

X<Policy_2: NoReturn> x;
Run Code Online (Sandbox Code Playgroud)

这与功能相同; 有:

void f(int arg_1 = 0, int arg_2 = 1, int arg_3 = 2)
{
}
Run Code Online (Sandbox Code Playgroud)

然后在主要:

f(arg_3: 55);
Run Code Online (Sandbox Code Playgroud)

Che*_*Alf 9

对于函数,您可以使用命名参数Idiom(在C++ 98和C++ 0x中).

请参阅C++ FAQ项目10.20什么是"命名参数成语"?.

对于模板参数,我认为你可以使用包装的概念,使用"类型载体"类型,通过它们的类型编码它们是哪个模板参数.它变得复杂.您可以查看Boost参数库中的想法,但实际上,对于模板参数,我认为不值得花时间(更不用说实际使用) - 它是学术性的.

干杯&hth.,


Edw*_*nge 8

没有那种语法,虽然使用这样的结构变得更容易,但创建它们却相当混乱.

请参阅Boost.Parameter

你结束了

typedef template_by_named< policy1<type1>, policy2<type2> > x;
Run Code Online (Sandbox Code Playgroud)

f(param_b = 23, param_d = 42)
Run Code Online (Sandbox Code Playgroud)

  • 有时候我想知道Dave Abrahams是不是用C++写的东西...... (3认同)