如何修复"一些结构与模板"的初始化程序太多"

Art*_*hur 2 c++ c++14

我有一个名为WtHasher的结构

template <typename V>
struct WtHasher {
    Ul (*hasher(V&));
    bool (*comparator(V&, V&));
};
Run Code Online (Sandbox Code Playgroud)

当我尝试使用curly-brace-ish样式创建此结构的对象时,我收到错误

... some code ...

WtHasher<int> hasher = {
        [] (int &k) {return (Ul)k;},
        [] (int &a, int &b) {return a == b;}
};

... some code ...
Run Code Online (Sandbox Code Playgroud)

错误:

error: too many initializers for ‘WtHasher<int>’
};
^
Run Code Online (Sandbox Code Playgroud)

这是为什么?结构中有2个字段,括号中有2个字段,因此它应该适合.

yep*_*ons 5

它应该是Ul (*hasher)(V&);,bool (*comparator)(V&, V&);如果你想声明指向函数的指针.否则它只是一个成员函数声明(参见最烦恼的解析).

  • 这不是真正最令人烦恼的解析;) (2认同)