私はC++ 0Xを使用します。 私はテンプレートの戻り値の型を持つテンプレート関数を持っている:C++は、暗黙的に呼び出されるテンプレート関数の戻り型を推定します。
MyBuffer<10> buf = "1234567890";
template< class T >
T getVal();
template<>
MyBuffer<5> getVal<MyBuffer<5>>()
{
return MyBuffer<5>(buf.data());
}
template<>
MyBuffer<10> getVal<MyBuffer<10>>()
{
return buf;
}
だから、第二に5つのシンボルを返す一つのケースで - 10 私は、次の方法でそれを使用することができます。
MyBuffer<5> fiveChars = getVal<MyBuffer<5>>();
MyBuffer<10> tenChars = getVal<MyBuffer<10>>();
しかし、私は思っていた:もちろん
MyBuffer<5> fiveChars = getVal();
MyBuffer<10> tenChars = getVal();
私はコンパイルエラーを持っている:私は、コールは、例えば、次のように簡略化することができます。
私の質問: 最後のコードスニペットを使用できるようにテンプレートを宣言することは可能ですか?私はgetValテンプレートの型を指定していませんが、コンパイラーは、テンプレートの特殊化がある具体的な型にそれを割り当てています。
あなたはGETVALを持っている可能性が() 'テンプレートオペレータMyBuffer ()とヘルパークラスを返す;' –
C++ 0X? – StoryTeller
[なぜコンパイラが戻り値の型からテンプレートパラメータを推測できないのですか?](https://stackoverflow.com/questions/45075703/why-cant-the-compiler-deduce @torytellerから返された@templateパラメータ) – Barmar