В дополнении к std::is_trivial
и std::is_trivially_copyable
, C++ 11 предоставляет целый ряд признаков типа для проверки того типа имеет тривиальные конструктор, деструкторы и копирование/операторы присваивания перемещения, то есть:Обоснования признаков типа проверке тривиальности класса специальных функций
std::is_trivially_constructible
std::is_trivially_default_constructible
std::is_trivially_copy_constructible
std::is_trivially_move_constructible
std::is_trivially_assignable
std::is_trivially_copy_assignable
std::is_trivially_move_assignable
std::is_trivially_destructible
Что является их оригинальная намеченная цель? Разумеется, некоторые документы (документы) комитета C++ должны объяснить обоснование их включения в стандартную библиотеку C++.
Они отлично подходят для модульного тестирования, чтобы убедиться, что кто-то испортил и сделал что-то, что ДОЛЖНО быть тривиально, что бы ни было тривиально, что приводит к молчаливому вызову неопределенного поведения в производственном коде. Также создавайте приятные 'static_assert' ловушки времени компиляции в производственном коде, если кто-то действительно * глупый, а не модульный. – user4581301