次のコードは、Xcodeでコンパイルエラー発生:Foo MyFoo(123);
Foo<int> MyFoo(123);
への修正問題を変更テンプレートの暗黙的パラメータ
template <typename T>
struct Foo
{
Foo(T Value)
{
}
};
int main()
{
Foo MyFoo(123);
return 0;
}
error: missing template arguments before 'MyFoo'
を、しかし、コンパイラが適切に把握できないようにする必要がありデータ・タイプ?
これはコンパイラのバグですか、または暗黙のテンプレートパラメータを誤解していますか?
Foo MyFoo(123);
がMyFoo
のための一時的なスペースを割り当てるされ、知るためにMyFoo
の完全修飾タイプを知っている必要があります。
、それはスペースを推測することができます。 –
コンストラクタの呼び出しの型は推測できますが、記憶域の型は推測できません。変数を単に 'Foo'として定義すると、' Foo 'と' Foo 'の両方を保持できますか?それとも、心の中に秘密に 'Foo 'があるのはいつも知っていますか?変数が 'const'の場合、値を再割り当てできないので実装できますが、' const T'と 'T'の異なる字句規則があり、大きな混乱が起こります。 –