https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97564

            Bug ID: 97564
           Summary: [11.0 regression] pybind11 compilation failure
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mar...@mpa-garching.mpg.de
  Target Milestone: ---

Created attachment 49439
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49439&action=edit
preprocessed test case

The attached testcase was distilled from glue code using Pybind11. It is
compiled without complaint by older g++ versions, but the development version
rejects it with:

artin@debian:~/codes/ducc$ g++ -c test.i -std=c++17 -Wfatal-errors
In file included from
/usr/lib/python3/dist-packages/pybind11/include/pybind11/attr.h:13,
                 from
/usr/lib/python3/dist-packages/pybind11/include/pybind11/pybind11.h:44,
                 from test.cc:1:
/usr/lib/python3/dist-packages/pybind11/include/pybind11/cast.h: In
instantiation of ‘typename
pybind11::detail::make_caster<T>::cast_op_type<typename
std::add_rvalue_reference<_Tp>::type>
pybind11::detail::cast_op(pybind11::detail::make_caster<T>&&) [with T =
std::__cxx11::basic_string<char>; typename
pybind11::detail::make_caster<T>::cast_op_type<typename
std::add_rvalue_reference<_Tp>::type> = std::__cxx11::basic_string<char>&&;
pybind11::detail::make_caster<T> =
pybind11::detail::type_caster<std::__cxx11::basic_string<char>, void>; typename
std::add_rvalue_reference<_Tp>::type = std::__cxx11::basic_string<char>&&]’:
/usr/lib/python3/dist-packages/pybind11/include/pybind11/cast.h:1707:22:  
required from ‘T pybind11::cast(const pybind11::handle&) [with T =
std::__cxx11::basic_string<char>; typename std::enable_if<(!
std::is_base_of<pybind11::detail::pyobject_tag, typename
std::remove_reference<_Tp>::type>::value), int>::type <anonymous> = 0]’
/usr/lib/python3/dist-packages/pybind11/include/pybind11/cast.h:1725:72:  
required from ‘T pybind11::handle::cast() const [with T =
std::__cxx11::basic_string<char>]’
/usr/lib/python3/dist-packages/pybind11/include/pybind11/cast.h:446:77:  
required from here
/usr/lib/python3/dist-packages/pybind11/include/pybind11/cast.h:950:43: error:
no type named ‘make_caster’ in
‘std::remove_reference<pybind11::detail::type_caster<std::__cxx11::basic_string<char>,
void>&>::type’ {aka ‘class
pybind11::detail::type_caster<std::__cxx11::basic_string<char>, void>’}
  949 |     return std::move(caster).operator
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~      
  950 |         typename make_caster<T>::template cast_op_type<typename
std::add_rvalue_reference<T>::type>();
      |        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated due to -Wfatal-errors.

Reply via email to