struct A // some class
{
void method(); // non-static member method
static void function(); // static member method
};
void function(); // global function
vector<A> vi; // any such `std` like container
Iterate()
以下の方法で呼び出すことができる関数(たとえば)が必要です。
Iterate(vi, &A::method); // (1)
Iterate(vi, &A::function); // (2a)
Iterate(vi, &function); // (2b)
(2a) と (2b) はまったく同じです。
Iterate()
(1) と (2) のプロトタイプは以下のようになります。
template<typename Container, typename Method>
void Iterate (Container &container, Method method); // for (1)
template<typename Container, typename Function>
void Iterate (Container &container, Function function); // for (2a), (2b)
当然、両方ともまったく同じであり、コンパイラ エラーが発生します。両方の機能が共存できるようにする C++03 で
オーバーロード/特殊化する方法はありますか?Iterate()