0

就像题目问的那样,C++类模板可以把方法名作为模板参数吗?

例如,

template <T>
class Foo
{
public:
    void T(int bar);
};
4

1 回答 1

2

不幸的是,C++ 核心语言没有任何处理名称的方法。

一些可能性:

  • 通过预处理器处理名称,即丑陋的宏。
    注意:Boost 参数库使用了一些在这里非常相关的未记录的Boost 宏技巧。我曾经将它用于一般选项类的东西。抱歉,我记不太清了,但本质上它支持 C++03 的一种可变参数宏。
  • 做你自己的自定义预处理,即基于脚本。
  • 以某种方式将负担放在客户端代码程序员身上。

对于那些想知道,为什么需要这个?,一个典型的例子是如何使用 C++ 中的 Python 库“命名元组”类,程序员在其中提供元组成员的名称。

于 2012-10-03T03:58:35.790 回答