テンプレート引数にデフォルトのコンストラクターが存在するかどうかを確認しようとしています。私はこのようなことをしたい:
template <typename A>
class Blah
{
Blah() { A* = new A(); }
}
しかし、コンパイル時にSFINAEまたはその他のトリックを介してそのコンストラクターが存在するかどうかを検出し、存在static_assert
しない場合は独自のコンストラクターを発生させたいと思います。
この問題std::vector
は、「デフォルトのコンストラクター」を持たないがデフォルトのパラメーターを持つコンストラクターを持つクラス(のような)がある場合に発生します。
したがって、を使用してstd::has_trivial_default_constructor
もtrueは返されません。私は使用できますがnew vector<T>()
。