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