pybind / pybind11

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

[BUG]: Can't bind std::vector<std::pair<int64_t, pybind11::bytes>> such type in pybind11 #4940

Open newprogrammer2022 opened 10 months ago

newprogrammer2022 commented 10 months ago

Required prerequisites

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

2.11.1

Problem description

When working ,I encountered a problem that need to bind std::vector<std::pair<int64_t, pybind11::bytes>> such type in pybind11. but this build failed in VS. report error C4996: 'pybind11::handle::operator ==': Use obj1.is(obj2) instead message : see reference to function template instantiation 'bool std::operator ==<int64_t,pybind11::bytes>(const std::pair<int64_t,pybind11::bytes> &,const std::pair<int64_t,pybind11::bytes> &)' being compiled

Did I do something wrong? I use std c++20 and pybind11 2.11.1. Looking forward to reply. Thanks

Reproducible example code

std::vector<std::pair<int64_t, pybind11::bytes>> _LoadFlow(const std::string& filename)
namespace py = pybind11;
PYBIND11_MAKE_OPAQUE(std::vector<std::pair<int64_t, py::bytes>>);
PYBIND11_MODULE(flow_loader, m) {
    py::class_<FlowLoader>(m, "FlowLoader")
        .def(py::init<>())
        .def("load_flowfile", &FlowLoader::_LoadFlow)
    py::bind_vector<std::vector<std::pair<int64_t, py::bytes>>>(m, "VectorPair");
}

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

Not a regression