【问题标题】:Can C++ class templates take method names as template parameters?C++ 类模板可以将方法名称作为模板参数吗?
【发布时间】:2012-10-03 03:46:49
【问题描述】:

如题,C++类模板可以把方法名作为模板参数吗?

例如,

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

【问题讨论】:

  • 我真的想不出这在哪里有用。您有具体问题,还是只是假设?
  • @chris - 从来没有说过。这只是我想到的一个问题。
  • 如果您正在做我认为您正在做的事情,您可能会发现有关函子的信息很有用。 (不,你不能这样做,但是文本文件 + c++ 编译器可以告诉你)。
  • @WhozCraig - 是的,它可以,但我没有大量的编译器可供我在所有不同的平台上尝试,我也无法解释为什么会这样'不包括在内,或者为什么它在理论上会不稳定;)
  • @Di-0xide 不需要大量的编译器;只有一个遵循该标准。并且该功能以多种方式包含,而不是 this 方式。

标签: c++ templates class-template


【解决方案1】:

很遗憾,C++ 核心语言没有任何处理名称的方法。

一些可能性:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多