指向成员函数的指针作为模板实例化的参数

时间:2014-07-07 09:58:04

标签: c++ templates

我工作的公司有一个用于修改特定ABI的C ++符号的API。

我正在尝试重写API以使其更直接。

我有以下课程模板:

template <typename T> struct Symbolizer;

template <class Class_T, typename ReturnType_T>
struct Symbolizer<ReturnType_T (Class_T::*FuncPtr)()>
{
  std::string operator() ()
  {
    // ...
  }
};

template <class Class_T, typename ReturnType_T>
struct Symbolizer<ReturnType_T (Class_T::*FuncPtr)() const>
{
  std::string operator() ()
  {
    // ...
  }
};

这样就可以用这种方式破坏std :: string :: length:

Symbolizer<&std::string::length> symbolizer;
std::cout << symbolizer() << std::endl;

当我用g ++构建它时,我收到以下错误:

error: ‘FuncPtr’ was not declared in this scope

G ++似乎并不理解我正在声明FuncPtr,而不是使用它。

我做错了什么或用c ++做它是不可能的?

还有一个信息:我遇到了c ++ 98。

0 个答案:

没有答案