次のコードスニペットは、私の作品:メンバー関数テンプレートと演算子オーバーロード()C++で
class Foo {
public:
template <class T> T& get() { ... }
};
Foo foo;
foo.get<int>() = ...;
ただし、次のコードスニペットは、私のために動作しません:
class Foo {
public:
template <class T> T& operator()() { ... }
};
Foo foo;
foo<int>() = ...;
エラーある:
expected primary-expression before '>' token
expected primary expression before ')' token
両方の誤差がfoo<int>()
なぜこれが機能しないのですか?これを修正することは可能ですか?あなたが明示的にテンプレート引数を指定する必要がある場合
あなたのテンプレート 'operator()'は、インスタンス化が戻り値でのみオーバーロードされるため、かなり使用できません。 'get'などの名前を使用してください。 – aschepler
これは使用できません(ただし、これはあまり好ましくありません)。以下の答えを見てください。 –
なぜ、クラス全体ではなく、関数をテンプレート化していますか?私がする必要がないので、 –