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.

Reply via email to