c++ - 命名?模板、函数中的参数

标签 c++ c++11

即将发布的 C++0x 标准是否对模板和/或函数中的命名参数进行了更新?例如,我希望能够编写以下内容:

之前定义过:

template<class T = int,class Policy_1, class Policy_2>
class X
{
};

然后在主要部分:

X<Policy_2: NoReturn> x;

这与函数相同;拥有:

void f(int arg_1 = 0, int arg_2 = 1, int arg_3 = 2)
{
}

然后在主要部分:

f(arg_3: 55);

最佳答案

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

请参阅 C++ 常见问题解答项 10.20 What is the "Named Parameter Idiom"? .

对于模板参数,我认为您可以使用包装的想法,使用“类型载体”类型,通过类型编码它们是哪个模板参数。它变得复杂。您可能会查看 Boost Parameters 库以获取想法,但本质上,对于模板参数,我认为不值得花时间在上面(更不用说实际使用了)——它是学术性的。

干杯,

关于c++ - 命名?模板、函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209326/

相关文章:

c++ - 什么是等同于 JavaFx 和 AnimationTimer 类的 C++?

c++ - 为什么 std::fstream 类不采用 std::string?

c++ - 如何使用 C++ 进行系统调用

c++ - 为什么 std::unique_ptr::reset() 总是无异常?

c++ - 在此代码中,new 创建的指针在哪里被删除?

c++ - std::async 可以与模板函数一起使用吗

C++ - 如何从同一类的静态函数访问类的私有(private)成员?

c++ - 改进嵌套循环的优化

c++ - BOOST_FOREACH 和 cxxtest 插件的转换问题

c++ - 编译器给出 lambda 函数转换错误