https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82478
Bug ID: 82478
Summary: Rejects valid access to private member type that
should be allowed by friend
Product: gcc
Version: 7.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eieio at google dot com
Target Milestone: ---
Created attachment 42325
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42325&action=edit
Complete source file that reproduces the issue.
Hello,
Attached is a source file that reproduces the issue. It appears that in some
contexts the friend declaration is not being honored, causing the compiler to
reject access to a private member type. If this bug turns out to be issue of
interpretation of the spec it would be helpful to understand the interpretation
so that we can discuss with our other compiler maintainers.
We reproduced this issue on various versions of GCC. For this bug submission we
used Compiler Explorer (https://gcc.godbolt.org/) to prepare the reproduction
example.
Thanks!
The following is the compiler output and settings as requested in the FAQ:
Using built-in specs.
COLLECT_GCC=/opt/compiler-explorer/gcc-7.2.0/bin/g++
Target: x86_64-linux-gnu
Configured with: ../gcc-7.2.0/configure --prefix /root/staging
--build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
--disable-multilib --disable-bootstrap --disable-multiarch --with-arch-32=i586
--enable-clocale=gnu --enable-languages=c,c++,go,fortran --enable-ld=yes
--enable-gold=yes --enable-libstdcxx-debug --enable-libstdcxx-time=yes
--enable-linker-build-id --enable-lto --enable-plugins --enable-threads=posix
--with-pkgversion=GCC-Explorer-Build
Thread model: posix
gcc version 7.2.0 (GCC-Explorer-Build)
COLLECT_GCC_OPTIONS='-g' '-o'
'/tmp/compiler-explorer-compiler11798-16759-19s20vn.7r70wo2yb9/output.s'
'-masm=intel' '-S' '-std=c++14' '-v' '-shared-libgcc' '-mtune=generic'
'-march=x86-64'
/opt/compiler-explorer/gcc-7.2.0/bin/../libexec/gcc/x86_64-linux-gnu/7.2.0/cc1plus
-quiet -v -iprefix
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/
-D_GNU_SOURCE -quiet -dumpbase example.cpp -masm=intel -mtune=generic
-march=x86-64 -auxbase-strip
/tmp/compiler-explorer-compiler11798-16759-19s20vn.7r70wo2yb9/output.s -g
-std=c++14 -version -o
/tmp/compiler-explorer-compiler11798-16759-19s20vn.7r70wo2yb9/output.s
GNU C++14 (GCC-Explorer-Build) version 7.2.0 (x86_64-linux-gnu)
compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR
version 3.1.4, MPC version 1.0.3, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../x86_64-linux-gnu/include"
ignoring duplicate directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0"
ignoring duplicate directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/x86_64-linux-gnu"
ignoring duplicate directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/backward"
ignoring duplicate directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/7.2.0/include"
ignoring duplicate directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/7.2.0/include-fixed"
ignoring nonexistent directory
"/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/include/x86_64-linux-gnu
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/x86_64-linux-gnu
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/backward
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/include
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/include-fixed
/usr/local/include
/opt/compiler-explorer/gcc-7.2.0/bin/../lib/gcc/../../include
/usr/include
End of search list.
GNU C++14 (GCC-Explorer-Build) version 7.2.0 (x86_64-linux-gnu)
compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR
version 3.1.4, MPC version 1.0.3, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-he