Wykryj, czy w czasie kompilacji istnieje domyślny konstruktor [duplikat]

To pytanie ma już odpowiedź tutaj:

Czy istnieje sposób przetestowania, czy klasa C ++ ma domyślny konstruktor (inny niż cechy typu dostarczone przez kompilator)? 7 odpowiedzi

Próbuję sprawdzić, czy istnieje domyślny konstruktor dla argumentu szablonu. Chcę zrobić coś takiego:

template <typename A>
class Blah
{
   Blah() { A* = new A(); } 
}

Ale chcę wykryć w czasie kompilacji za pomocą SFINAE lub inna sztuczka, jeśli ten konstrukt istnieje, i podnieśstatic_assert własnego, jeśli nie.

Problem pojawia się, gdy mam zajęcia (np.std::vector) które nie mają „domyślnego konstruktora”, ale konstruktora z domyślnymi parametram

Używajstd::has_trivial_default_constructor nie zwróci prawdy. Chociaż mogę używaćnew vector<T>().

questionAnswers(2)

yourAnswerToTheQuestion