mirror of
https://github.com/boostorg/move.git
synced 2025-08-02 13:44:28 +02:00
Use reinterpret_cast instead of static_cast when the address sanitizer is on to avoid errors in C++03 emulation.
This commit is contained in:
@@ -53,10 +53,10 @@
|
||||
|
||||
#include <boost/move/detail/type_traits.hpp>
|
||||
|
||||
#if 1
|
||||
#define BOOST_MOVE_TO_RV_CAST(RV_TYPE, ARG) static_cast<RV_TYPE>(ARG)
|
||||
#else
|
||||
#if defined(BOOST_MOVE_ADDRESS_SANITIZER_ON)
|
||||
#define BOOST_MOVE_TO_RV_CAST(RV_TYPE, ARG) reinterpret_cast<RV_TYPE>(ARG)
|
||||
#else
|
||||
#define BOOST_MOVE_TO_RV_CAST(RV_TYPE, ARG) static_cast<RV_TYPE>(ARG)
|
||||
#endif
|
||||
|
||||
//Move emulation rv breaks standard aliasing rules so add workarounds for some compilers
|
||||
|
@@ -23,6 +23,16 @@
|
||||
#define BOOST_MOVE_PERFECT_FORWARDING
|
||||
#endif
|
||||
|
||||
#if defined(__has_feature)
|
||||
#define BOOST_MOVE_HAS_FEATURE __has_feature
|
||||
#else
|
||||
#define BOOST_MOVE_HAS_FEATURE(x) 0
|
||||
#endif
|
||||
|
||||
#if BOOST_MOVE_HAS_FEATURE(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
|
||||
#define BOOST_MOVE_ADDRESS_SANITIZER_ON
|
||||
#endif
|
||||
|
||||
//Macros for documentation purposes. For code, expands to the argument
|
||||
#define BOOST_MOVE_IMPDEF(TYPE) TYPE
|
||||
#define BOOST_MOVE_SEEDOC(TYPE) TYPE
|
||||
|
Reference in New Issue
Block a user