|  | Home | Libraries | People | FAQ | More | 
template <class T>
struct is_copy_constructible : public true_type-or-false_type {};
        Inherits: If T
        is a (possibly cv-qualified) type with a copy constructor, then inherits
        from true_type,
        otherwise inherits from false_type.
        Type T must be a complete
        type.
      
        In other words, inherits from true_type
        only if copy constructor of T
        not marked with = delete,
        T does not derives from
        boost::noncopyable and does not marked with BOOST_MOVABLE_BUT_NOT_COPYABLE(T).
      
        Compiler Compatibility: This trait requires
        the C++11 features decltype
        and SFINAE-expression support for full support.
      
        If your compiler does not support C++11 deleted functions (= delete)
        or does not support SFINAE for the deleted constructors, then derive your
        classes from boost::noncopyable or mark them with BOOST_MOVABLE_BUT_NOT_COPYABLE(T) to show
        that class is noncopyable.
      
The trait does not care about access modifiers, so if you see errors like this:
'T::T(const T&)' is private boost/type_traits/is_copy_constructible.hpp:68:5: error: within this context
then you are trying to call that macro for a structure with private constructor:
struct T { // ... private: T(const T &); // ... };
        To fix that you must modify your structure, explicitly marking it as noncopyable
        (= delete,
        boost::noncopyable or BOOST_MOVABLE_BUT_NOT_COPYABLE(T))
        or explicitly specialize trait.
      
        Header:  #include
        <boost/type_traits/is_copy_constructible.hpp>
        or  #include <boost/type_traits.hpp>