mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
gh-91321: Fix compatibility with C++ older than C++11 (#93784)
Fix the compatibility of the Python C API with C++ older than C++11. _Py_NULL is only defined as nullptr on C++11 and newer.
This commit is contained in:
parent
3597c12941
commit
4caf5c2753
5 changed files with 76 additions and 36 deletions
|
@ -36,10 +36,12 @@ extern "C++" {
|
|||
inline type _Py_CAST_impl(int ptr) {
|
||||
return reinterpret_cast<type>(ptr);
|
||||
}
|
||||
#if __cplusplus >= 201103
|
||||
template <typename type>
|
||||
inline type _Py_CAST_impl(std::nullptr_t) {
|
||||
return static_cast<type>(nullptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
template <typename type, typename expr_type>
|
||||
inline type _Py_CAST_impl(expr_type *expr) {
|
||||
|
@ -70,8 +72,9 @@ extern "C++" {
|
|||
#endif
|
||||
|
||||
// Static inline functions should use _Py_NULL rather than using directly NULL
|
||||
// to prevent C++ compiler warnings. In C++, _Py_NULL uses nullptr.
|
||||
#ifdef __cplusplus
|
||||
// to prevent C++ compiler warnings. On C++11 and newer, _Py_NULL is defined as
|
||||
// nullptr.
|
||||
#if defined(__cplusplus) && __cplusplus >= 201103
|
||||
# define _Py_NULL nullptr
|
||||
#else
|
||||
# define _Py_NULL NULL
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue