pybind / pybind11

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

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

Open newprogrammer2022 opened 1 year ago

newprogrammer2022 commented 1 year 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

Ali-Hon commented 4 weeks ago

Hi, did you manage to make it work? Or is it indeed a bug?