• Jason Rhinelander's avatar
    Adds automatic casting on assignment of non-pyobject types (#551) · 3f1ff3f4
    Jason Rhinelander authored
    This adds automatic casting when assigning to python types like dict,
    list, and attributes.  Instead of:
    
        dict["key"] = py::cast(val);
        m.attr("foo") = py::cast(true);
        list.append(py::cast(42));
    
    you can now simply write:
    
        dict["key"] = val;
        m.attr("foo") = true;
        list.append(42);
    
    Casts needing extra parameters (e.g. for a non-default rvp) still
    require the py::cast() call. set::add() is also supported.
    
    All usage is channeled through a SFINAE implementation which either just returns or casts. 
    
    Combined non-converting handle and autocasting template methods via a
    helper method that either just returns (handle) or casts (C++ type).
    3f1ff3f4
test_issues.cpp 15.5 KB