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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |6.1.0, 6.4.0
   Target Milestone|---                         |7.0
      Known to work|                            |7.1.0, 8.1.0

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
More self contained testcase (rather than the code snipit in comment #0):
#include <stddef.h>
#include <iostream>
template <typename C>
class S {
public:
    void add (C c) { ++cnt; }
    size_t size () const { return cnt; }

private:
    size_t cnt {}; 
};

struct Foo1 {};
struct Foo2 {};
struct Foo3 {};

class Z : public S<Foo1>, public S<Foo2>, public S<Foo3> {
public:
    using S<Foo1>::add;
    using S<Foo2>::add;
    using S<Foo3>::add;

    using S<Foo1>::size;    // (1)
    using S<Foo2>::size;    // (2)
    using S<Foo3>::size;    // (3)
};

int main(void)
{

Z z;

z.add (Foo1 {});
z.add (Foo1 {});
z.add (Foo2 {});

std::cout << z.size () << std::endl;
}

Reply via email to