in another message of mineと記載されているように、"<"(より小さい)でメンバー関数の2つのポインタを比較することはできません。少なくとも、これは未定義の動作を引き起こします。私は両方のVisual C++だけでなく、GCCと、このコードをコンパイルするために管理しているstd :: set内の関数とメソッドポインタ
:
私の知る限り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
@templatetypedef FWIW C++ 11の対応する言葉は、§20.8.5/8の下にあります。これは困惑している。私はいくつかの(コンパイルビル)の友人をここに招待しました – sehe
@Xeo [チャット](http://chat.stackoverflow.com/transcript/message/2582471#2582471)のアイデアを与えている – sehe