• Jason Rhinelander's avatar
    Fail static_assert when trying to reference non-referencable types · c03db9ba
    Jason Rhinelander authored
    The previous commit to address #392 triggers a compiler warning about
    returning a reference to a local variable, which is *not* a false alarm:
    the following:
    
        py::cast<int &>(o)
    
    (which happens internally in an overload declaration) really is
    returning a reference to a local, because the cast operators for the
    type_caster for numeric types returns a reference to its own member.
    
    This commit adds a static_assert to make that a compilation failure
    rather than returning a reference into about-to-be-freed memory.
    
    Incidentally, this is also a fix for #219, which is exactly the same
    issue: we can't reference numeric primitives that are cast from
    wrappers around python numeric types.
    c03db9ba
test_issues.cpp 8.87 KB