Извините за ответ на собственный вопрос.
Поиск в Google Я обнаружил, что настоящая причина, по которой мы не можем проверить, есть ли у класса конструктор или деструкторы, заключается в том, что известная методика, используемая для обнаружения наличия у класса члена, основана на получении адреса члена. Но у конструкторов и деструкторов нет имени, мы не можем взять их адрес.
Если мы не можем взять адрес, я не вижу способа заставить компилятор среагировать на конструкцию без непосредственного создания его экземпляра, но в этом случае во время компиляции не обнаруживается, а возникает ошибка.
Поэтому, чтобы ответить на мой собственный вопрос, я бы сказал, что при существующих методах их невозможно обнаружить, и необходима поддержка компилятора. Но C ++ выявил много сюрпризов, и вещи, которые были невозможны в данное время, были раскрыты, возможно с использованием другой техники.
Я надеюсь, что специалист по языку C ++ читает это и может дать более четкое объяснение.