1
私はです。実際にはですが、この質問は恥ずかしいですが、結局テンプレートについてはわかりません。完全に特殊化されたテンプレートのコンストラクタの行外定義
だから私はこのスニペットを持っている:
、まあ、私はちょうどテンプレートクラスfoo
、クラス
bar
、コンストラクタを持つ専門
foo <bar>
を持っている、と私は外にそのコンストラクタを定義したいと思います
template <typename> class foo;
class bar;
template <> class foo <bar>
{
public:
foo();
};
template <> foo <bar> :: foo()
{
}
ライン。
この例のように見えるかもしれませんが、私はそれをコンパイルすることはできません。私はいつもNo function template matches function template specialization 'foo'
を取得します。
テンプレートを完全に特殊化しないようにダミーパラメータを追加すると(例:template <bool dummy> foo <bar, dummy> :: foo()
)、うまく動作します。私は何が欠けていますか?
'テンプレート<> fooの :: FOO()'に変更し - > 'FOO :: FOO()'。あなたは何にも特化しておらず、あなたは以前に宣言されたエンティティを定義しています。 –
StoryTeller
D'oh。それは意味をなさない。ありがとう。 –