Вы могли бы подумать, что std: :is_constructible был бы достаточно близок (кроме того факта, что он также проверяет разрушаемость, чего в идеале мне бы хотелось избежать), но, видимо, это не удается:
Код: Выделить всё
#include
using U = int;
enum T : U { };
static_assert(std::is_constructible::value, "error"); // fails
static_assert(std::is_convertible::value, "error"); // fails
Это также заставляет меня задаться вопросом, что другие крайние случаи, которые я, возможно, пропустил... Понятия не имею.
Как правильно проверять исключительно конструктивность с помощью Синтаксис T(...), в идеале с использованием стандартных признаков и с как можно меньшим количеством ложноположительных или ложноотрицательных результатов?
Подробнее здесь: https://stackoverflow.com/questions/787 ... -negatives