長いテンプレート関数宣言があります:
template <typename T> void foo(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
過負荷なし。明示的にインスタンス化したいと思います。私は書くことができます(たとえば for T
= int
):
template void foo<int>(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
しかし、私は本当にその長い宣言をコピーしたくありません。次のようなことを言えたらよかったのに。
template <typename T> using bar = decltype(foo<T>);
その後:
template bar<int>;
現在、最初の行はコンパイルされますが (GCC 4.9.3)、2 行目はコンパイルされません。どうにかして動作させることはできますか?またはdecltype()
、インスタンス化の宣言をコピーしないようにするために、他の方法を使用できますか?
注:引数だけからは型を推測できない例を意図的に使用しました。これは、どのソリューションでもこのケースをサポートする必要があるためです。