Как узнать на этапе компиляции (а-ля boost::type_traits):
1. Конструируем ли объект по умолчанию? То есть он не абстрактен, у него есть конструктор по умолчанию и он публичный.
2. Конструируем ли объект копированием? То есть он не абстрактен и его конструктор копии (не опрерато присваивания) публичный.
В бусте вроде именно такого нет. Хелп плиз