Compare commits

..

16 Commits

Author SHA1 Message Date
a4dff52f67 Merge branch 'develop' 2020-05-26 09:31:40 +08:00
cf820922ac Merge pull request #15 from eldiener/develop
Changes for Embarcadero C++ clang-based compilers, targeting Boost 1.74
2020-04-09 21:38:47 +08:00
c4addf9795 Corrected previous fix. 2020-04-08 17:48:25 -04:00
87ff02bf79 Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers. 2020-03-30 13:31:11 -04:00
9fd6a5e2c6 Merge pull request #11 from awulkiew/patch-1
Use class keyword in std::tuple_size and std::tuple_element specializations
2020-01-23 22:37:20 +08:00
ddaa127cee Merge pull request #13 from Romain-Geissler-1A/fix-deprecated-copy-warning
Fix -Wdeprecated-copy warning with gcc 9.
2020-01-23 22:36:37 +08:00
19f7cfdcdb [CMake] Generate cmake target that other libraries can use
... to express their dependency on boost tuple and get
usage requiremments, such as the include directory
2020-01-06 16:36:37 +02:00
504a70bd04 Merge pull request #14 from Lastique/patch-1
Fix narrowing conversion in tuple_manipulator constructor
2019-09-16 08:03:52 +08:00
72f2e7535e Fix narrowing conversion in tuple_manipulator ctor
This fixes unnecessary, possibly wrapping conversion of the character argument of tuple manipulators on tuple_manipulator construction. This should silence MSVC warning C4244:

  tuple_io.hpp(142,71): warning C4244:  'argument': conversion from 'const CharType' to 'const char', possible loss of data

Related to https://github.com/boostorg/filesystem/issues/118.
2019-09-15 15:41:29 +03:00
1e0276741b Fix -Wdeprecated-copy warning with gcc 9. 2019-04-17 21:13:33 +00:00
0b724234ce Merge pull request #12 from Mike-Devel/min_cmake
[CMake] Generate cmake target that other libraries can use
2018-12-24 07:25:52 +08:00
292f3f9dc8 [CMake] Generate cmake target that other libraries can use
... to express their dependency on boost tuple and get
usage requiremments, such as the include directory
2018-12-23 22:01:55 +01:00
30794afc61 Use class keyword in std::tuple_size and std::tuple_element specializations
To avoid warnings 'X defined as a struct template but previously declared as a class template'.
2018-01-06 12:40:55 +01:00
b8e982cd6f Merge pull request #10 from Kojoley/suppress-clang-mismatched-tags-warning
Suppress mismatched tags warning
2018-01-06 06:11:11 +08:00
37ef42e2c3 Suppress mismatched tags warning 2018-01-05 16:09:49 +03:00
327c1c4fe0 Merge pull request #8 from boostorg/feature/structured-bindings
Make boost::tuple tuple-like to support structured bindings
2018-01-04 07:10:48 +08:00
5 changed files with 49 additions and 12 deletions

22
CMakeLists.txt Normal file
View File

@ -0,0 +1,22 @@
# 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
#
# NOTE: CMake support for Boost.Tuple is currently experimental at best
# and the interface is likely to change in the future
cmake_minimum_required(VERSION 3.5)
project(BoostTuple)
add_library(boost_tuple INTERFACE)
add_library(Boost::tuple ALIAS boost_tuple)
target_include_directories(boost_tuple INTERFACE include)
target_link_libraries(boost_tuple
INTERFACE
Boost::config
Boost::core
Boost::static_assert
Boost::type_traits
)

View File

@ -141,7 +141,7 @@ private:
typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
apply<T>::type::head_type unqualified_type;
public:
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
#if BOOST_WORKAROUND(BOOST_BORLANDC,<0x600)
typedef const unqualified_type type;
#else
typedef BOOST_DEDUCED_TYPENAME boost::add_const<unqualified_type>::type type;
@ -310,6 +310,7 @@ struct cons {
tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())
{}
cons( const cons& u ) : head(u.head), tail(u.tail) {}
template <class HT2, class TT2>
cons( const cons<HT2, TT2>& u ) : head(u.head), tail(u.tail) {}
@ -389,6 +390,8 @@ struct cons<HT, null_type> {
const null_type&, const null_type&, const null_type&)
: head () {}
cons( const cons& u ) : head(u.head) {}
template <class HT2>
cons( const cons<HT2, null_type>& u ) : head(u.head) {}

View File

@ -71,34 +71,46 @@ get(const tuples::cons<HT, TT>& c) {
namespace std
{
#if defined(BOOST_CLANG)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wmismatched-tags"
#endif
// std::tuple_size
template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
struct tuple_size< boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >:
boost::tuples::length< boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >
class tuple_size< boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >:
public boost::tuples::length< boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >
{
};
template<class H, class T> struct tuple_size< boost::tuples::cons<H, T> >: boost::tuples::length< boost::tuples::cons<H, T> >
template<class H, class T> class tuple_size< boost::tuples::cons<H, T> >:
public boost::tuples::length< boost::tuples::cons<H, T> >
{
};
template<> struct tuple_size< boost::tuples::null_type >: boost::tuples::length< boost::tuples::null_type >
template<> class tuple_size< boost::tuples::null_type >:
public boost::tuples::length< boost::tuples::null_type >
{
};
// std::tuple_element
template<std::size_t I, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
struct tuple_element< I, boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >:
boost::tuples::element< I, boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >
class tuple_element< I, boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >:
public boost::tuples::element< I, boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >
{
};
template<std::size_t I, class H, class T> struct tuple_element< I, boost::tuples::cons<H, T> >: boost::tuples::element< I, boost::tuples::cons<H, T> >
template<std::size_t I, class H, class T> class tuple_element< I, boost::tuples::cons<H, T> >:
public boost::tuples::element< I, boost::tuples::cons<H, T> >
{
};
#if defined(BOOST_CLANG)
# pragma clang diagnostic pop
#endif
} // namespace std
#endif // !defined(BOOST_NO_CXX11_HDR_TUPLE)

View File

@ -102,7 +102,7 @@ class tuple_manipulator {
CharType f_c;
public:
explicit tuple_manipulator(detail::format_info::manipulator_type m,
const char c = 0)
CharType c = CharType())
: mt(m), f_c(c) {}
template<class CharTrait>
@ -259,7 +259,7 @@ extract_and_check_delimiter(
#if defined (BOOST_NO_STD_LOCALE)
const bool is_delimiter = !isspace(d);
#elif defined ( __BORLANDC__ )
#elif defined ( BOOST_BORLANDC )
const bool is_delimiter = !std::use_facet< std::ctype< CharType > >
(is.getloc() ).is( std::ctype_base::space, d);
#else

View File

@ -81,7 +81,7 @@ typedef tuple<std::string, std::pair<A, B> > t4;
typedef tuple<A*, tuple<const A*, const B&, C>, bool, void*> t5;
typedef tuple<volatile int, const volatile char&, int(&)(float) > t6;
# if !defined(__BORLANDC__) || __BORLAND__ > 0x0551
# if !defined(BOOST_BORLANDC) || BOOST_BORLANDC > 0x0551
typedef tuple<B(A::*)(C&), A&> t7;
#endif
@ -306,7 +306,7 @@ make_tuple_test()
// With function pointers, make_tuple works just fine
#if !defined(__BORLANDC__) || __BORLAND__ > 0x0551
#if !defined(BOOST_BORLANDC) || BOOST_BORLANDC > 0x0551
make_tuple(&make_tuple_test);
#endif