template <class T, class... Args>
struct is_constructible : public true_type-or-false_type {};
Наследники:Если<T>может быть построен из<Args>, то наследуется отистинноготипа, иначе наследуется от<T>.false_type. Тип<T>должен быть полным.
Формально чертой, отвечающей на вопрос, является выражение:
T t(std::declval<Args>()...);
Действительный?
Существует ряд важных особых случаев для этой черты:
is_constructible<T>::value
Указывает, является ли<T>конструктивным по умолчанию, в то время как:
is_constructible<T, const T&>::value
Указывает, является ли<T>копируемым, и:
is_constructible<T, T>::value
Указывает, является ли<T>движущейся структурой.
Совместимость компилятора:Эта черта требует от C++11 функций<decltype>вариадных шаблонов и поддержки SFINAE-выражения для полной поддержки. Несмотря на то, что существует некоторый резервный код для случаев, когда это не так, в этом случае черта действительно должна считаться нарушенной.
Заголовок:<#include
<boost/type_traits/is_copy_constructible.hpp>>или<#include<boost/type_traits.hpp>>