Detect se existe um construtor padrão no tempo de compilação [duplicado]

Esta pergunta já tem uma resposta aqui:

xiste uma maneira de testar se uma classe C ++ possui um construtor padrão (além dos traços de tipo fornecidos pelo compilador respostas

Estou tentando verificar se existe um construtor padrão para um argumento de modelo. Eu quero fazer algo assim:

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

Mas eu quero detectar em tempo de compilação via SFINAE ou algum outro truque, se esse construtor existir, e crie umstatic_assert se não tiver.

O problema surge quando tenho aulas (comostd::vector) que não possui um "construtor padrão", mas um construtor com parâmetros padrã

Então usandostd::has_trivial_default_constructor não retornará verdadeiro. Embora eu possa usarnew vector<T>().

questionAnswers(2)

yourAnswerToTheQuestion