1
0
forked from boostorg/core

Compare commits

..

2 Commits

Author SHA1 Message Date
Glen Fernandes
8503c536dc Add documentation for rebind C++03 compatibility 2022-07-17 17:18:54 -04:00
Glen Fernandes
7100c05490 In C++03 use rebind<U>::other instead of rebind<U> 2022-07-17 10:06:51 -04:00
5 changed files with 20 additions and 23 deletions

View File

@@ -3,8 +3,6 @@
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt
if(NOT DEFINED IDF_TARGET)
cmake_minimum_required(VERSION 3.5...3.20)
project(boost_core VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
@@ -27,22 +25,3 @@ if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
add_subdirectory(test)
endif()
else()
FILE(GLOB_RECURSE headers include/*.h include/*.hpp)
idf_component_register(
SRCS
${headers}
INCLUDE_DIRS
include
REQUIRES
boost_assert
boost_config
boost_static_assert
boost_throw_exception
)
endif()

View File

@@ -113,6 +113,9 @@ also not defined (`pointer_traits` is SFINAE-friendly).
where `Args` is zero or more type arguments; otherwise, the member is not
defined.]]]
[note When C++11 template aliases are not supported, the `type` for `rebind` is
`T::rebind<U>::other` if such a type exists.]
[endsect]
[section Member functions]

View File

@@ -100,11 +100,19 @@ template<class T, class U, class = void>
struct ptr_rebind
: ptr_transform<T, U> { };
#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class T, class U>
struct ptr_rebind<T, U,
typename ptr_valid<typename T::template rebind<U> >::type> {
typedef typename T::template rebind<U> type;
};
#else
template<class T, class U>
struct ptr_rebind<T, U,
typename ptr_valid<typename T::template rebind<U>::other>::type> {
typedef typename T::template rebind<U>::other type;
};
#endif
#if !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
template<class T, class E>

View File

@@ -56,7 +56,7 @@ struct P3 {
typedef int element_type;
template<class>
struct rebind { };
using rebind = P3;
};
template<class T>

View File

@@ -64,8 +64,15 @@ struct P2 {
struct P3 {
typedef int element_type;
#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class>
struct rebind { };
using rebind = P3;
#else
template<class>
struct rebind {
typedef P3 other;
};
#endif
};
template<class T>