[/ 
  Copyright 2015 John Maddock.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]

[section:is_constructible is_constructible]

   template <class T, class... Args>
   struct is_constructible : public __tof {};
    
__inherit If `T` can be constructed from `Args`,
then inherits from __true_type, otherwise inherits from __false_type.  Type `T`
must be a complete type.

Formally the trait answers the question, is the expression:

   T t(std::declval<Args>()...);

valid?

There are a number of important special cases for this trait:

   is_constructible<T>::value

Indicates whether `T` is default constructible, while:

   is_constructible<T, const T&>::value

Indicates whether `T` is copy-constructible, and:

   is_constructible<T, T>::value

Indicates whether `T` is move-constructible.


__compat This trait requires the C++11 features `decltype` variadic templates and SFINAE-expression support for full support.
While there is some fallback code for cases where this is not the case, the trait should really be considered broken in that case.

__header ` #include <boost/type_traits/is_copy_constructible.hpp>` or ` #include <boost/type_traits.hpp>`

[endsect]

