https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85101
--- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> --- The ICE is due to the assertion below failing. /* In C++17 we shouldn't be copying a TARGET_EXPR except into a base subobject. */ if (CHECKING_P && cxx_dialect >= cxx17) gcc_assert (TREE_CODE (arg) != TARGET_EXPR || force_elide /* It's from binding the ref parm to a packed field. */ || convs[0]->need_temporary_p || seen_error () /* See unsafe_copy_elision_p. */ || DECL_BASE_CONSTRUCTOR_P (fn));