123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- [/
- 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.
- The header will define the macro `BOOST_TT_IS_CONSTRUCTIBLE_CONFORMING` when the full implementation is available.
- __header ` #include <boost/type_traits/is_constructible.hpp>` or ` #include <boost/type_traits.hpp>`
- [endsect]
|