forked from boostorg/type_traits
Merge branch 'develop'
Resolved Conflicts: include/boost/type_traits/detail/config.hpp
This commit is contained in:
18
CMakeLists.txt
Normal file
18
CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright 2018 Mike Dev
|
||||
# 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
|
||||
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
project(BoostTypeTraits)
|
||||
|
||||
add_library(boost_type_traits INTERFACE)
|
||||
add_library(Boost::type_traits ALIAS boost_type_traits)
|
||||
|
||||
target_include_directories(boost_type_traits INTERFACE include)
|
||||
|
||||
target_link_libraries(boost_type_traits
|
||||
INTERFACE
|
||||
Boost::config
|
||||
Boost::static_assert
|
||||
)
|
||||
|
@ -11,6 +11,12 @@ volatile qualifier from a type. Each class that performs a transformation define
|
||||
|
||||
The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/type_traits/index.html).
|
||||
|
||||
| | Master | Develop |
|
||||
|------------------|----------|-------------|
|
||||
| Travis | [](https://travis-ci.org/boostorg/type_traits) | [](https://travis-ci.org/boostorg/type_traits) |
|
||||
| Appveyor | [](https://ci.appveyor.com/project/jzmaddock/type-traits/branch/master) | [](https://ci.appveyor.com/project/jzmaddock/type-traits/branch/develop) |
|
||||
|
||||
|
||||
## Support, bugs and feature requests ##
|
||||
|
||||
Bugs and feature requests can be reported through the [Gitub issue tracker](https://github.com/boostorg/type_traits/issues)
|
||||
|
@ -39,7 +39,7 @@ __compat This trait requires the C++11 features `decltype` variadic templates an
|
||||
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_copy_constructible.hpp>` or ` #include <boost/type_traits.hpp>`
|
||||
__header ` #include <boost/type_traits/is_constructible.hpp>` or ` #include <boost/type_traits.hpp>`
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -81,7 +81,7 @@
|
||||
//
|
||||
// Can we implement accurate is_function/is_member_function_pointer (post C++03)?
|
||||
//
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !BOOST_WORKAROUND(BOOST_GCC, < 40900)\
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !BOOST_WORKAROUND(BOOST_GCC, < 40805)\
|
||||
&& !BOOST_WORKAROUND(BOOST_MSVC, < 1900) && !BOOST_WORKAROUND(__clang_major__, <= 4)
|
||||
# define BOOST_TT_HAS_ASCCURATE_IS_FUNCTION
|
||||
#endif
|
||||
|
@ -50,7 +50,7 @@ namespace boost {
|
||||
}
|
||||
|
||||
template <class T> struct is_complete
|
||||
: public integral_constant<bool, ::boost::is_function<typename boost::remove_reference<T>::type>::value || (sizeof(detail::check_is_complete<T>(0)) != sizeof(char))> {};
|
||||
: public integral_constant<bool, ::boost::is_function<typename boost::remove_reference<T>::type>::value || (sizeof(boost::detail::check_is_complete<T>(0)) != sizeof(char))> {};
|
||||
|
||||
#elif !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
|
||||
|
||||
|
@ -51,7 +51,7 @@ namespace boost{
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(::boost::is_complete<T>::value, "The target type must be complete in order to test for constructibility");
|
||||
};
|
||||
template <class T, class Arg> struct is_constructible<T, Arg> : public integral_constant<bool, is_destructible<T>::value && sizeof(detail::is_constructible_imp::test1<T, Arg>(0)) == sizeof(boost::type_traits::yes_type)>
|
||||
template <class T, class Arg> struct is_constructible<T, Arg> : public integral_constant<bool, is_destructible<T>::value && sizeof(boost::detail::is_constructible_imp::test1<T, Arg>(0)) == sizeof(boost::type_traits::yes_type)>
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(::boost::is_complete<T>::value, "The target type must be complete in order to test for constructibility");
|
||||
};
|
||||
|
@ -58,7 +58,7 @@ namespace boost{
|
||||
BOOST_STATIC_ASSERT_MSG(boost::is_complete<T>::value, "Arguments to is_default_constructible must be complete types");
|
||||
};
|
||||
#else
|
||||
template <class T> struct is_default_constructible : public integral_constant<bool, sizeof(detail::is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>
|
||||
template <class T> struct is_default_constructible : public integral_constant<bool, sizeof(boost::detail::is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(boost::is_complete<T>::value, "Arguments to is_default_constructible must be complete types");
|
||||
};
|
||||
|
@ -34,7 +34,7 @@ namespace boost{
|
||||
|
||||
}
|
||||
|
||||
template <class T> struct is_destructible : public integral_constant<bool, sizeof(detail::is_destructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>
|
||||
template <class T> struct is_destructible : public integral_constant<bool, sizeof(boost::detail::is_destructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(boost::is_complete<T>::value, "Arguments to is_destructible must be complete types");
|
||||
};
|
||||
|
Reference in New Issue
Block a user