[llvm-bugs] [Bug 30916] New: If a class has indirect private virtual base with non-trivial public destructor, a class cannot access virtual base's destructor.

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Nov 4 05:17:02 PDT 2016


https://llvm.org/bugs/show_bug.cgi?id=30916

            Bug ID: 30916
           Summary: If a class has indirect private virtual base with
                    non-trivial public destructor, a class cannot access
                    virtual base's destructor.
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: boostcpp at gmail.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified

If a class has indirect private virtual base with non-trivial public
destructor, a class cannot access its virtual base's destructor.

Example code:

struct A
{
    ~A(){}
};

struct B: virtual private A
{
    ~B() {}
};

struct C: public B
{
    ~C() {}
};

Result:

prog.cc:11:8: error: inherited virtual base class 'A' has private destructor
struct C: public B
       ^
prog.cc:6:11: note: declared private here
struct B: virtual private A

GCC accept this code.
Clang until 3.3 accept this code.
Clang 3.4 and later reject this code.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20161104/ecb9f365/attachment.html>


More information about the llvm-bugs mailing list