キャストするしかないのか。。
これも例の、テンプレートのパラメータ引数のその場でのオーバーロードは期待できないと私が思い込んでいるケースの一種なのだろうか。
#include <iostream> #include <algorithm> #include <vector> #include <functional> #include <numeric> using namespace std; class A{ public: void Hi( void ){ cout<< "hi"<<endl; } void Hi( void ) const { cout<< "hi"<<endl; }//★ }; int main( void ) { vector< const A* > ca; // ←★ これをconst A* のコンテナにしとく for( int i=0; i<10; ++i ){ ca.push_back( new A ); }// i for_each( ca.begin(), ca.end(), mem_fun( &A::Hi ) );// するとエラー! for_each( ca.begin(), ca.end(), mem_fun( (void(A::*)(void) const)&A::Hi ) );// OK return 0; }
「&A::Hi」の表記で、constバージョンを明記できる記述法はないものか。
「&A::Hi const」とかやってもだめだしやはりキャストするしかないのか。。