は、私は長いテンプレート関数の宣言を持っています。私はそれを明示的にインスタンス化したいと思います。 明示的なテンプレートのインスタンス化でコードの重複を避けるためにdecltype()を使用できますか?無過負荷と</p> <pre><code>template <typename T> void foo(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop); </code></pre> <p>:
template void foo<int>(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
しかし、私は本当に長い宣言することをコピーしたくない:私は(=
int
T
のために言う)を書くことができます。
template <typename T> using bar = decltype(foo<T>);
、その後:私はのようなものを言うことができるようにを好きだろう
template bar<int>;
は今、最初の行は(GCC 4.9.3)コンパイルしますが、2行目は、」doesnのt。どういうわけか、それを働かせることはできますか?または、decltype()
を使用して、インスタンス化の宣言をコピーしないようにすることはできますか?
注:私はこのケースをサポートする解決策が必要なので、引数だけから型を推論することはできません。
私は実際に興味があった関数引数のテンプレート引数を推論できないように質問を編集しています。私はちょうど良い尺度のためにT tを振っただけで、あなたがそれを使うために...あなたの答えがまだ関連しているなら、素晴らしい。 – einpoklum
@einpoklum質問から遠く離れているわけではありません。なぜ私の答えは関係ないと思いますか? – Barry
私はそれが無関係ではないと言っていませんでした。私はちょうどあなたが実際よりも多くのことに頼っている可能性がある(最後の編集の前に)感覚を持っていました。 – einpoklum