即将推出的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)
对于函数,您可以使用命名参数Idiom(在C++ 98和C++ 0x中).
请参阅C++ FAQ项目10.20什么是"命名参数成语"?.
对于模板参数,我认为你可以使用包装的概念,使用"类型载体"类型,通过它们的类型编码它们是哪个模板参数.它变得复杂.您可以查看Boost参数库中的想法,但实际上,对于模板参数,我认为不值得花时间(更不用说实际使用) - 它是学术性的.
干杯&hth.,
没有那种语法,虽然使用这样的结构变得更容易,但创建它们却相当混乱.
请参阅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)
| 归档时间: |
|
| 查看次数: |
2983 次 |
| 最近记录: |