[llvm-bugs] [Bug 32180] New: cannot cast to private base while there is a public virtual inheritance

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Mar 8 03:54:07 PST 2017


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

            Bug ID: 32180
           Summary: cannot cast to private base while there is a public
                    virtual inheritance
           Product: clang
           Version: 3.8
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++11
          Assignee: unassignedclangbugs at nondot.org
          Reporter: igagis at gmail.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org

The following code does not compile:

#include <iostream>
#include <memory> 

struct Shared : public std::enable_shared_from_this<Shared>{
};

struct Container : virtual public Shared{
};

struct List : private Container, virtual public Shared {
};

int main(int argc, char** argv){
    auto c = std::make_shared<List>();
    return 0;
}





The error is:

/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h:1106:50:
error:
      cannot cast 'List' to its private base class 'const
enable_shared_from_this<Shared>'
          __enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr);

-- 
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/20170308/df43e77a/attachment-0001.html>


More information about the llvm-bugs mailing list