テンプレート関数のシグネチャは2つあります。ここで、Tはintまたはdoubleのいずれかになります。テンプレート関数への関数ポインタ
template <typename T>
Box<T> f2p(Box<T> const& box, Point<T> const& pt, Orientation o)
{
...
}
template <typename T>
Box<T> p2f(Box<T> const& box, Point<T> const& pt, Orientation o)
{
...
}
ここでは、方向に応じて、f2pまたはp2fのいずれかを呼び出したいとします。私はf2pまたはp2fのいずれかを指す関数ポインタを作成したい。テンプレート関数への関数ポインタを作成するにはどうすればよいですか?私はこのような何かを試してみたが、私はコンパイルエラーを取得
typename <template T>
Box<T> do_transformation(Box<T> const& box, ..., int dir = 0)
{
function pointer p = dir ? pointer to f2p : pointer to p2f
return p<T>(box);
}
:私は、次のような効果を実現したい
Box<T> (*p)(Box<T>, Point<T>, Orientation) = dir ? fc2p<T> : p2fc<T>
はそれもautoを使用するために私には発生しなかったと信じてすることはできません。 –