https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102104
Bug ID: 102104 Summary: parameter packs not expanded with '...' for operator conversions Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Originally the second testcase from PR 79094 but the first one has since been fixed. Take -std=c++17: template<typename A, typename B> struct unvariadic: private A, private B { // okay, provided A and B each declare appropriate // target_type and operator target_type() members using A::operator typename A::target_type, B::operator typename B::target_type; }; template<typename... Bases> struct variadic: private Bases... { // error: parameter packs not expanded with '...': using Bases::operator typename Bases::target_type...; }; This should compile just as ICC and clang do.