public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/99985] New: [11 Regression] bits/hashtable.h:483:9: error: body of ‘constexpr’ function ... not a return-statement since g:1cbba49e3417d9b0661e70301d6fb7a7f52fd360
@ 2021-04-09  8:34 marxin at gcc dot gnu.org
  2021-04-09  8:35 ` [Bug c++/99985] " marxin at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-04-09  8:34 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 99985
           Summary: [11 Regression] bits/hashtable.h:483:9: error: body of
                    ‘constexpr’ function ... not a return-statement since
                    g:1cbba49e3417d9b0661e70301d6fb7a7f52fd360
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---

I noticed that in botan, inkscape and mariadb packages:

$ cat oid.C
#include <string>
#include <unordered_map>
struct OID {};
std::unordered_map< std::string, OID > load_str2oid_map() {
  return std::unordered_map< std::string, OID >{};
}

$ cat oid.C
#include <string>
#include <unordered_map>
struct OID {};
std::unordered_map< std::string, OID > load_str2oid_map() {
  return std::unordered_map< std::string, OID >{};
}

$ g++ oid.C -c -std=c++11
In file included from /home/marxin/bin/gcc/include/c++/11.0.1/unordered_map:46,
                 from oid.C:2:
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h: In instantiation of
‘static constexpr bool std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey,
_Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_S_nothrow_move()
[with bool _No_realloc = true; _Key = std::__cxx11::basic_string<char>; _Value
= std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’:
oid.C:5:49:   recursively required from ‘std::unordered_map<_Key, _Tp, _Hash,
_Pred, _Alloc>::unordered_map(std::unordered_map<_Key, _Tp, _Hash, _Pred,
_Alloc>&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = OID; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _Pred =
std::equal_to<std::__cxx11::basic_string<char> >; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >]’
oid.C:5:49:   required from here
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h:483:9: error: body of
‘constexpr’ function ‘static constexpr bool std::_Hashtable<_Key, _Value,
_Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy,
_Traits>::_S_nothrow_move() [with bool _No_realloc = true; _Key =
std::__cxx11::basic_string<char>; _Value = std::pair<const
std::__cxx11::basic_string<char>, OID>; _Alloc = std::allocator<std::pair<const
std::__cxx11::basic_string<char>, OID> >; _ExtractKey =
std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’ not a return-statement
  483 |         }
      |         ^
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h: In instantiation of
‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash,
_Unused, _RehashPolicy, _Traits>::_Hashtable(std::_Hashtable<_Key, _Value,
_Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy,
_Traits>&&) [with _Key = std::__cxx11::basic_string<char>; _Value =
std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’:
oid.C:5:49:   recursively required from ‘std::unordered_map<_Key, _Tp, _Hash,
_Pred, _Alloc>::unordered_map(std::unordered_map<_Key, _Tp, _Hash, _Pred,
_Alloc>&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = OID; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _Pred =
std::equal_to<std::__cxx11::basic_string<char> >; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >]’
oid.C:5:49:   required from here
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h:520:33: error: ‘static
constexpr bool std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
_Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_S_nothrow_move() [with
bool _No_realloc = true; _Key = std::__cxx11::basic_string<char>; _Value =
std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’ called in a constant
expression
  520 |         noexcept(_S_nothrow_move())
      |                  ~~~~~~~~~~~~~~~^~
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h:477:9: note: ‘static
constexpr bool std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
_Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_S_nothrow_move() [with
bool _No_realloc = true; _Key = std::__cxx11::basic_string<char>; _Value =
std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’ is not usable as a
‘constexpr’ function because:
  477 |         _S_nothrow_move()
      |         ^~~~~~~~~~~~~~~
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h: In instantiation of
‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash,
_Unused, _RehashPolicy, _Traits>::_Hashtable(std::_Hashtable<_Key, _Value,
_Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy,
_Traits>&&, std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash,
_RangeHash, _Unused, _RehashPolicy, _Traits>::__node_alloc_type&&,
std::true_type) [with _Key = std::__cxx11::basic_string<char>; _Value =
std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>; std::_Hashtable<_Key,
_Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy,
_Traits>::__node_alloc_type = std::_Hashtable<std::__cxx11::basic_string<char>,
std::pair<const std::__cxx11::basic_string<char>, OID>,
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >,
std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char> >,
std::hash<std::__cxx11::basic_string<char> >,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true,
false, true> >::__node_alloc_type; std::true_type =
std::integral_constant<bool, true>]’:
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h:522:17:   required
from ‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash,
_RangeHash, _Unused, _RehashPolicy, _Traits>::_Hashtable(std::_Hashtable<_Key,
_Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy,
_Traits>&&) [with _Key = std::__cxx11::basic_string<char>; _Value =
std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’
/home/marxin/bin/gcc/include/c++/11.0.1/bits/unordered_map.h:184:7:   required
from here
/home/marxin/bin/gcc/include/c++/11.0.1/bits/hashtable.h:487:33: error: ‘static
constexpr bool std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
_Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_S_nothrow_move() [with
bool _No_realloc = true; _Key = std::__cxx11::basic_string<char>; _Value =
std::pair<const std::__cxx11::basic_string<char>, OID>; _Alloc =
std::allocator<std::pair<const std::__cxx11::basic_string<char>, OID> >;
_ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<std::__cxx11::basic_string<char> >; _Hash =
std::hash<std::__cxx11::basic_string<char> >; _RangeHash =
std::__detail::_Mod_range_hashing; _Unused =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<true, false, true>]’ called in a constant
expression
  487 |         noexcept(_S_nothrow_move());
      |                  ~~~~~~~~~~~~~~~^~

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2021-04-09 16:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-09  8:34 [Bug c++/99985] New: [11 Regression] bits/hashtable.h:483:9: error: body of ‘constexpr’ function ... not a return-statement since g:1cbba49e3417d9b0661e70301d6fb7a7f52fd360 marxin at gcc dot gnu.org
2021-04-09  8:35 ` [Bug c++/99985] " marxin at gcc dot gnu.org
2021-04-09 10:06 ` jakub at gcc dot gnu.org
2021-04-09 10:21 ` [Bug c++/99985] [10/11 " redi at gcc dot gnu.org
2021-04-09 10:24 ` redi at gcc dot gnu.org
2021-04-09 10:27 ` jakub at gcc dot gnu.org
2021-04-09 10:29 ` redi at gcc dot gnu.org
2021-04-09 12:09 ` [Bug libstdc++/99985] [9/10/11 " cvs-commit at gcc dot gnu.org
2021-04-09 15:15 ` cvs-commit at gcc dot gnu.org
2021-04-09 16:42 ` cvs-commit at gcc dot gnu.org
2021-04-09 16:42 ` redi at gcc dot gnu.org

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).