public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "matt.lawson at precisionplanting dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug libstdc++/96303] New: Ambiguous overload for operator!= for std::__debug::bitset compiled with -std=c++20 and -pedantic.
Date: Thu, 23 Jul 2020 19:01:05 +0000	[thread overview]
Message-ID: <bug-96303-4@http.gcc.gnu.org/bugzilla/> (raw)

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96303

            Bug ID: 96303
           Summary: Ambiguous overload for operator!= for
                    std::__debug::bitset compiled with -std=c++20 and
                    -pedantic.
           Product: gcc
           Version: 10.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: matt.lawson at precisionplanting dot com
  Target Milestone: ---

Hello,

In gcc/g++ 10.1.1, the following code produces an ambiguous overload for
std::__debug::bitset's operator!= when compiled with -D _GLIBCXX_DEBUG
-std=c++20 -pedantic (see bottom for full -v -save-temps output):


#include <bitset>

int main()
{
  std::bitset<5> x, y;
  return x != y;
}


When compiling without _GLIBCXX_DEBUG defined, the non-debug bitset does not
produce the same error.  Likewise, it does not produce error when compiling
with gcc/g++ 9, a previous C++ standard, or without -pedantic.  

It seems the non-debug bitset was updated for P1614R2 (commit
596676d66cab21e5ed85669e737af5b62f067d57), but the debug bitset was not, so the
fix may be as simple as applying the same changes to the debug bitset.

Thanks


Full -f -save-temps output:

g++ -v -save-temps  ~/Desktop/debug_bitset.cpp -o ~/Desktop/debug_bitset.o -D
_GLIBCXX_DEBUG -std=c++20 -Wall -Wextra -pedantic -fpermissive
-fno-strict-aliasing -fwrapv 
Using built-in specs.
COLLECT_GCC=/usr/bin/g++
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/10/lto-wrapper
OFFLOAD_TARGET_NAMES=hsa:nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,ada,go,d
--enable-offload-targets=hsa,nvptx-none=/usr/nvptx-none,amdgcn-amdhsa=/usr/amdgcn-amdhsa,
--without-cuda-driver --enable-checking=release --disable-werror
--with-gxx-include-dir=/usr/include/c++/10 --enable-ssp --disable-libssp
--disable-libvtv --disable-cet --disable-libcc1 --enable-plugin
--with-bugurl=https://bugs.opensuse.org/ --with-pkgversion='SUSE Linux'
--with-slibdir=/lib64 --with-system-zlib --enable-libstdcxx-allocator=new
--disable-libstdcxx-pch --enable-libphobos
--enable-version-specific-runtime-libs --with-gcc-major-version-only
--enable-linker-build-id --enable-linux-futex --enable-gnu-indirect-function
--program-suffix=-10 --without-system-libunwind --enable-multilib
--with-arch-32=x86-64 --with-tune=generic
--with-build-config=bootstrap-lto-lean --enable-link-mutex
--build=x86_64-suse-linux --host=x86_64-suse-linux
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.1.1 20200625 [revision c91e43e9363bd119a695d64505f96539fa451bf2]
(SUSE Linux) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o'
'/home/mlawson/Desktop/debug_bitset.o' '-D' '_GLIBCXX_DEBUG' '-std=c++2a'
'-Wall' '-Wextra' '-Wpedantic' '-fpermissive' '-fno-strict-aliasing' '-fwrapv'
'-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib64/gcc/x86_64-suse-linux/10/cc1plus -E -quiet -v -D_GNU_SOURCE -D
_GLIBCXX_DEBUG /home/mlawson/Desktop/debug_bitset.cpp -mtune=generic
-march=x86-64 -std=c++2a -Wall -Wextra -Wpedantic -fpermissive
-fno-strict-aliasing -fwrapv -fpch-preprocess -o debug_bitset.ii
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/10
 /usr/include/c++/10/x86_64-suse-linux
 /usr/include/c++/10/backward
 /usr/lib64/gcc/x86_64-suse-linux/10/include
 /usr/local/include
 /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed
 /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/include
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o'
'/home/mlawson/Desktop/debug_bitset.o' '-D' '_GLIBCXX_DEBUG' '-std=c++2a'
'-Wall' '-Wextra' '-Wpedantic' '-fpermissive' '-fno-strict-aliasing' '-fwrapv'
'-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib64/gcc/x86_64-suse-linux/10/cc1plus -fpreprocessed debug_bitset.ii
-quiet -dumpbase debug_bitset.cpp -mtune=generic -march=x86-64 -auxbase
debug_bitset -Wall -Wextra -Wpedantic -std=c++2a -version -fpermissive
-fno-strict-aliasing -fwrapv -o debug_bitset.s
GNU C++17 (SUSE Linux) version 10.1.1 20200625 [revision
c91e43e9363bd119a695d64505f96539fa451bf2] (x86_64-suse-linux)
        compiled by GNU C version 10.1.1 20200625 [revision
c91e43e9363bd119a695d64505f96539fa451bf2], GMP version 6.2.0, MPFR version
4.0.2-p6, MPC version 1.1.0, isl version isl-0.22.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++17 (SUSE Linux) version 10.1.1 20200625 [revision
c91e43e9363bd119a695d64505f96539fa451bf2] (x86_64-suse-linux)
        compiled by GNU C version 10.1.1 20200625 [revision
c91e43e9363bd119a695d64505f96539fa451bf2], GMP version 6.2.0, MPFR version
4.0.2-p6, MPC version 1.1.0, isl version isl-0.22.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 00000000000000000000000000000000
In file included from /usr/include/c++/10/bitset:1595,
                 from /home/mlawson/Desktop/debug_bitset.cpp:1:
/usr/include/c++/10/debug/bitset: In instantiation of ‘bool
std::__debug::bitset<_Nb>::operator!=(const std::__debug::bitset<_Nb>&) const
[with long unsigned int _Nb = 5]’:
/home/mlawson/Desktop/debug_bitset.cpp:6:15:   required from here
/usr/include/c++/10/debug/bitset:360:26: error: ambiguous overload for
‘operator!=’ (operand types are ‘const _Base’ {aka ‘const
std::__cxx1998::bitset<5>’} and ‘const std::__debug::bitset<5>’)
  360 |       { return _M_base() != __rhs; }
      |                ~~~~~~~~~~^~~~~~~~
/usr/include/c++/10/debug/bitset:355:7: note: candidate: ‘bool
std::__debug::bitset<_Nb>::operator==(const std::__debug::bitset<_Nb>&) const
[with long unsigned int _Nb = 5]’ (reversed)
  355 |       operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
In file included from /home/mlawson/Desktop/debug_bitset.cpp:1:
/usr/include/c++/10/bitset:1306:7: note: candidate: ‘bool
std::__cxx1998::bitset<_Nb>::operator==(const std::__cxx1998::bitset<_Nb>&)
const [with long unsigned int _Nb = 5]’ (rewritten)
 1306 |       operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~

             reply	other threads:[~2020-07-23 19:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-23 19:01 matt.lawson at precisionplanting dot com [this message]
2020-07-23 19:18 ` [Bug libstdc++/96303] [10/11 Regression] " redi at gcc dot gnu.org
2020-08-07 19:29 ` cvs-commit at gcc dot gnu.org
2020-08-07 19:46 ` cvs-commit at gcc dot gnu.org
2020-08-07 19:46 ` redi at gcc dot gnu.org
2020-08-27 12:37 ` redi at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-96303-4@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).