pybind / pybind11

Seamless operability between C++11 and Python
https://pybind11.readthedocs.io/
Other
15.55k stars 2.09k forks source link

[BUG]: XCode compilation error in pybind11 v12.2.0 (pybind11.h, line 1145) #5114

Open josephsieh opened 5 months ago

josephsieh commented 5 months ago

Required prerequisites

What version (or hash if on master) of pybind11 are you using?

2.12.0

Problem description

Environment:

Xcode Version: 15.3 Compiler: Apple clang (default) C++ Language Dialect: C++17 (std=c++17) Description:

A compilation error occurs when using pybind11 version 12.2.0. The error originates from line 1145 of pybind11.h. There is no issue in 2.11.1 and before.

Error Message:

Loop variable 'kwarg' binds to a temporary value produced by a range of type 'pybind11::dict'

Code Snippet:

static PyObject *dispatcher(PyObject *self, PyObject *args_in, PyObject *kwargs_in) {
...
                    for (const auto &kwarg : kwargs) { // Compiler error (line 1145 of pybind11.h)
                        if (first) {
                            first = false;
                        } else {
                            msg += ", ";
                        }
                        msg += pybind11::str("{}=").format(kwarg.first);
                        try {
                            msg += pybind11::repr(kwarg.second);
                        } catch (const error_already_set &) {
                            msg += "<repr raised Error>";
                        }
                    }
...
}

Reproducible example code

No response

Is this a regression? Put the last known working version here if it is.

2.11.1