如in another message of mine所述,不可能將2個指針與「<」(小於)的成員函數進行比較。或者至少,這會導致未定義的行爲。std :: set中的函數和方法指針
我剛纔設法編譯此代碼都與Visual C++以及GCC:
template <class Receiver, class Param = void*, class Return = void>
class EventReceiver : public IFunction<> {
protected:
std::set< Return(Receiver::*)(Param) > test;
std::set< Return(*)(Param) > test2;
...
據我所知,做一個std ::地圖或std ::設置的任何東西,它必須能夠將該組的值與「<」進行比較。這是否意味着上述容器或實際的編譯器有一個以這種方式比較指針與方法的工作實現?
我的回答是不正確的 - 指向成員和指針是不一樣的。我很抱歉! – templatetypedef 2012-02-08 19:42:36
@templatetypedef FWIW C++ 11中的相應措辭在§20.8.5/8之下。這令人迷惑。我邀請了一些(編譯器構建)的朋友在這裏發表意見 – sehe 2012-02-08 19:48:52
@Xeo給出了一個想法[聊天](http://chat.stackoverflow.com/transcript/message/2582471#2582471) – sehe 2012-02-08 20:12:37