https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78326
Bug ID: 78326
Summary: incorrect c++ usage in experimental/vector and others?
_X_max_align is inaccessible
Product: gcc
Version: 6.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: mib.bugzilla at gmail dot com
Target Milestone: ---
Hello, I work for Intel on the Intel c++ compiler and our compiler uses the g++
headers when we are compiling on Linux host. When we compile the
experimental/vector file we are finding a programming problem. We've also
compiled this construct using the Microsoft visual studio compiler and the
clang compiler, those compilers likewise are not able to process this
construct.
Here's what our compiler reports:
include/c++/6.2.0/experimental/memory_resource(284): error #308: member
"std::experimental::fundamentals_v2::pmr::memory_resource::_S_max_align"
(declared at line 74) is inaccessible
__alignment : _S_max_align);
^
detected during instantiation of "void
*std::experimental::fundamentals_v2::pmr::__resource_adaptor_imp<_Alloc>::do_allocate(std::size_t={unsigned
long}, std::size_t={unsigned long}) [with _Alloc=std::allocator<char>]"
Using creduce, we created this smaller test case:
icpc -c vecE.cpp -w
vecE.cpp(14): error #308: member "C::_S_max_align" (declared at line 10) is
inaccessible
size_t __new_size = _S_max_align;
^
detected during instantiation of "void *D<<unnamed>>::m_fn1() [with
<unnamed>=B::rebind_alloc<int>]"
compilation aborted for vecE.cpp (code 2)
-bash-4.2$ cat !$
cat vecE.cpp
typedef int size_t;
class A;
struct B {
template < typename > using rebind_alloc = A;
};
template < typename > class D;
template < typename > using resource_adaptor = D < B::rebind_alloc < int >>;
class C {
static constexpr size_t
_S_max_align = 0;
};
template < typename > class D:C {
virtual void * m_fn1 () {
size_t __new_size = _S_max_align;
}
};
resource_adaptor < A > __get_default_resource___r;
What do you think, is it possible you could correct this? We see the same
diagnostic in experimental/unordered_set, unordered_map, string, set, regex,
memory_resource, map, list, forward_list, dequeue
Thanks and regards, Melanie Blower