mirror of
https://github.com/python/cpython.git
synced 2026-01-06 07:22:09 +00:00
* 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. (cherry picked from commit4caf5c2753) * test_cppext now builds the C++ extension with setuptools. * Add @test.support.requires_venv_with_pip. (cherry picked from commitca0cc9c433)
This commit is contained in:
parent
871b1dc469
commit
ef591cf8e3
7 changed files with 156 additions and 88 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