In file included from test_intrusive_ptr.cpp:10:
./intrusive_ptr.hpp:539:53: error: '_Weak_observer' is a private member of
'std::_Intrusive_ptr_impl::_Deleteable'
using _Observer = typename intrusive_base::_Weak_observer;
^
test_intrusive_ptr.cpp:27:21: note: in instantiation of template class 'std::intrusive_weak_ptr' requested here
template class std::intrusive_weak_ptr;
^
./intrusive_ptr.hpp:141:9: note: implicitly declared private here
class _Weak_observer : public _Ref_count_base {
^
./intrusive_ptr.hpp:556:24: error: '__create_observer' is a private member of
'std::_Intrusive_ptr_impl::_Deleteable'
__observer = __rhs->__create_observer();
^
test_intrusive_ptr.cpp:27:21: note: in instantiation of member function 'std::intrusive_weak_ptr::intrusive_weak_ptr' requested here
template class std::intrusive_weak_ptr;
^
./intrusive_ptr.hpp:174:20: note: implicitly declared private here
_Weak_observer * __create_observer() const volatile {
^
2 errors generated.
Но код хорошо компилируется после того, как я добавляю public в строке 134. Это ошибка в Clang?
Я попытался скомпилировать чью -то интрузивный_Птр с Clang 3.7 & -std = c ++ 1z , и он генерирует ошибки (GCC 5.2.1 -это в порядке): [code]In file included from test_intrusive_ptr.cpp:10: ./intrusive_ptr.hpp:539:53: error: '_Weak_observer' is a private member of 'std::_Intrusive_ptr_impl::_Deleteable' using _Observer = typename intrusive_base::_Weak_observer; ^ test_intrusive_ptr.cpp:27:21: note: in instantiation of template class 'std::intrusive_weak_ptr' requested here template class std::intrusive_weak_ptr; ^ ./intrusive_ptr.hpp:141:9: note: implicitly declared private here class _Weak_observer : public _Ref_count_base { ^ ./intrusive_ptr.hpp:556:24: error: '__create_observer' is a private member of 'std::_Intrusive_ptr_impl::_Deleteable' __observer = __rhs->__create_observer(); ^ test_intrusive_ptr.cpp:27:21: note: in instantiation of member function 'std::intrusive_weak_ptr::intrusive_weak_ptr' requested here template class std::intrusive_weak_ptr; ^ ./intrusive_ptr.hpp:174:20: note: implicitly declared private here _Weak_observer * __create_observer() const volatile { ^ 2 errors generated. [/code] Но код хорошо компилируется после того, как я добавляю public в строке 134. Это ошибка в Clang?