6
は、私は、テンプレートコンストラクタを持つクラスを作成したい:C++標準では、テンプレート以外のクラスのテンプレートコンストラクタを使用できますか?
class foo
{
template <class T> foo(T var) {}
};
これはVS2008でコンパイルするが、それは非標準の拡張である場合、またはC++標準で許可されていれば、私は見当がつかない。 【temp.mem]で
これは許可されています。 – BoBTFish
私は、少なくともストレートC++の点で、MSは標準を尊重しており、一般的には拡張のために標準から逸脱しているわけではありません。 – ChiefTwoPencils
時にはとても便利です。コンパイルしてはならない理由はありません。コンストラクタは依然として関数であり、テンプレートベースである可能性があります。しかしコンストラクタには制限があります。 * explicit *テンプレートパラメータでは呼び出すことはできません。彼らは引数リストから推論可能でなければなりません。私。 'テンプレート foo(){T何か; ...} 'は動作しません。 –
WhozCraig