オーバーロードされた関数の呼び出し(解決案) @pepshisoさんがさくっと答えてくださった. #include <stdio.h> void f(int) { puts("f:int"); } void f(double) { puts("f:double"); } template <class P> struct call_ { explicit call_(P p) : p(p) {} void operator()(void (*func)(P)) const { func(p); } P p; }; template <class P> call_<P> call(P p) { return call_<P>(p); } int main() { call(5)(f); call(5.3)(f); } なるほど, 引数と関数を同時に決めようとすると関数をキャストしないとあいま