6

長いテンプレート関数宣言があります:

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()、インスタンス化の宣言をコピーしないようにするために、他の方法を使用できますか?

注:引数だけからは型を推測できない例を意図的に使用しました。これは、どのソリューションでもこのケースをサポートする必要があるためです。

4

1 に答える 1