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 respostasEstou 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>()
.