我工作的公司有一个用于修改特定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。