Viewing file: pr97268.C (1.23 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-do compile { target c++11 } } // { dg-additional-options -Wall } // PR 97268, ICE due to broken inherited-from-virtual base-ctor class Handle { public: explicit Handle(char const *const &) { } ~Handle() {} Handle(const Handle &) = delete; Handle &operator=(const Handle &) = delete;
protected: int lasterr = 0;
};
struct ObjectBase { ~ObjectBase() {}
protected: explicit ObjectBase(const char *lc_, int ln_, Handle &h, unsigned) : handle(h) { }
protected:
Handle &handle; };
template <bool CACHED> struct Object : virtual public ObjectBase { explicit Object(const char *lc_, int ln_, Handle &env);
protected: using ObjectBase::ObjectBase;
};
class BetterObjectBase : virtual public ObjectBase { protected: BetterObjectBase(const char *lc_, int ln_, Handle &env) : ObjectBase("", 0, env, 0) {}
};
template <bool CACHED> class BetterObject : public Object<CACHED>, public BetterObjectBase { public: BetterObject(Handle &env) : ObjectBase("", 0, env, 0) , Object<CACHED>("", 0, env, 0) , BetterObjectBase("", 0, env) {} // { dg-error "use of deleted function" }
};
int main() { Handle h("handle");
BetterObject<true> B(h);
return 0; }
|