【问题标题】:How can I make gcc understand this template syntax?我怎样才能让 gcc 理解这个模板语法?
【发布时间】:2010-03-10 20:51:27
【问题描述】:

我正在尝试在 gcc http://www.codeproject.com/KB/cpp/ImpossiblyFastCppDelegate.aspx 中使用委托库,但 gcc 4.3 无法识别“首选语法”。 IE。如何让编译器理解 模板 语法代替模板??

TIA /罗伯

【问题讨论】:

  • RET_TYPE 大概是一些宏。所以#include定义宏的文件。你真的用 gcc 编译吗?如果没有别的,你应该使用 g++,为了方便。
  • 根据codeproject.com/Messages/3267648/… 有人遇到了这个问题。您需要使用此代码吗?
  • 是的,我愿意。在一些帮助下最终让它工作。还有尼尔,你说得对,我正在使用 g++。

标签: c++ templates syntax function


【解决方案1】:

如果一个类的模板函数为:

class A {
public:
    template<typename T>
    static void doThis() {...}
};

template<typename T>
class B {
public:
    static void doThat() {
       A::doThis<T>();
    }
};

那么 VC++ 可以识别 B 类中的语法,但是对于 GCC,你必须插入关键字 template:

template<typename T>
class B {
public:
    static void doThat() {
       A::template doThis<T>();  // <-- "template" inserted
    }
};

然后它在 GCC 和 VC++ 中都可以工作(我在脑海中写下了这个,所以我相当确定它是正确的;)

【讨论】:

    猜你喜欢
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多