public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/96537] New: Missing std::pair constructor
@ 2020-08-08 16:05 vries at gcc dot gnu.org
  2020-08-08 16:08 ` [Bug c++/96537] " vries at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: vries at gcc dot gnu.org @ 2020-08-08 16:05 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 96537
           Summary: Missing std::pair constructor
           Product: gcc
           Version: 4.8.5
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

Consider test-case test.c:
...
#include <memory>
#include <unordered_map>
class A {
 public:
  A (int a) { i = a; }
  int i;
};
int main (void) {
  std::unordered_map<int, std::unique_ptr<A>> m;
  m.emplace (1, new A(1));
  return 0;
}
...

With gcc 7.5.0, we have:
...
$ g++-7 test.c -O2 -std=c++11
$ ./a.out
$
...

With gcc 4.8.5, we have instead:
...
$ g++-4.8 test.c -O2 -std=c++11 
In file included from /usr/include/c++/4.8/bits/hashtable.h:35:0,
                 from /usr/include/c++/4.8/unordered_map:47,
                 from test.c:2:
/usr/include/c++/4.8/bits/hashtable_policy.h: In instantiation of
‘std::__detail::_Hash_node<_Value, false>::_Hash_node(_Args&& ...) [with _Args
= {int, A*}; _Value = std::pair<const int, std::unique_ptr<A> >]’:
/usr/include/c++/4.8/ext/new_allocator.h:120:4:   required from ‘void
__gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up =
std::__detail::_Hash_node<std::pair<const int, std::unique_ptr<A> >, false>;
_Args = {int, A*}; _Tp = std::__detail::_Hash_node<std::pair<const int,
std::unique_ptr<A> >, false>]’
/usr/include/c++/4.8/bits/hashtable.h:727:6:   required from
‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
_RehashPolicy, _Traits>::__node_type* std::_Hashtable<_Key, _Value, _Alloc,
_ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy,
_Traits>::_M_allocate_node(_Args&& ...) [with _Args = {int, A*}; _Key = int;
_Value = std::pair<const int, std::unique_ptr<A> >; _Alloc =
std::allocator<std::pair<const int, std::unique_ptr<A> > >; _ExtractKey =
std::__detail::_Select1st; _Equal = std::equal_to<int>; _H1 = std::hash<int>;
_H2 = std::__detail::_Mod_range_hashing; _Hash =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<false, false, true>; std::_Hashtable<_Key,
_Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy,
_Traits>::__node_type = std::__detail::_Hash_node<std::pair<const int,
std::unique_ptr<A> >, false>]’
/usr/include/c++/4.8/bits/hashtable.h:1260:71:   required from
‘std::pair<typename std::__detail::_Hashtable_base<_Key, _Value, _ExtractKey,
_Equal, _H1, _H2, _Hash, _Traits>::iterator, bool> std::_Hashtable<_Key,
_Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy,
_Traits>::_M_emplace(std::true_type, _Args&& ...) [with _Args = {int, A*}; _Key
= int; _Value = std::pair<const int, std::unique_ptr<A> >; _Alloc =
std::allocator<std::pair<const int, std::unique_ptr<A> > >; _ExtractKey =
std::__detail::_Select1st; _Equal = std::equal_to<int>; _H1 = std::hash<int>;
_H2 = std::__detail::_Mod_range_hashing; _Hash =
std::__detail::_Default_ranged_hash; _RehashPolicy =
std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<false, false, true>; typename
std::__detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
_Hash, _Traits>::iterator = std::__detail::_Node_iterator<std::pair<const int,
std::unique_ptr<A> >, false, false>; std::true_type =
std::integral_constant<bool, true>]’
/usr/include/c++/4.8/bits/hashtable.h:665:69:   required from
‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
_RehashPolicy, _Traits>::__ireturn_type std::_Hashtable<_Key, _Value, _Alloc,
_ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::emplace(_Args&&
...) [with _Args = {int, A*}; _Key = int; _Value = std::pair<const int,
std::unique_ptr<A> >; _Alloc = std::allocator<std::pair<const int,
std::unique_ptr<A> > >; _ExtractKey = std::__detail::_Select1st; _Equal =
std::equal_to<int>; _H1 = std::hash<int>; _H2 =
std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash;
_RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits =
std::__detail::_Hashtable_traits<false, false, true>; std::_Hashtable<_Key,
_Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy,
_Traits>::__ireturn_type =
std::pair<std::__detail::_Node_iterator<std::pair<const int, std::unique_ptr<A>
>, false, false>, bool>]’
/usr/include/c++/4.8/bits/unordered_map.h:311:54:   required from
‘std::pair<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc,
std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing,
std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>,
std::is_default_constructible<_Hash>, std::is_copy_assignable<_Hash>,
std::__detail::__is_noexcept_hash<_Key, _Hash> > >::value, false, true>
>::iterator, bool> std::unordered_map<_Key, _Tp, _Hash, _Pred,
_Alloc>::emplace(_Args&& ...) [with _Args = {int, A*}; _Key = int; _Tp =
std::unique_ptr<A>; _Hash = std::hash<int>; _Pred = std::equal_to<int>; _Alloc
= std::allocator<std::pair<const int, std::unique_ptr<A> > >; typename
std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc,
std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing,
std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>,
std::is_default_constructible<_Hash>, std::is_copy_assignable<_Hash>,
std::__detail::__is_noexcept_hash<_Key, _Hash> > >::value, false, true>
>::iterator = std::__detail::_Node_iterator<std::pair<const int,
std::unique_ptr<A> >, false, false>]’
test.c:10:25:   required from here
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: error: no matching
function for call to ‘std::pair<const int, std::unique_ptr<A> >::pair(int, A*)’
  : _M_v(std::forward<_Args>(__args)...) { }
                                       ^
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: note: candidates are:
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/4.8/memory:62,
                 from test.c:1:
/usr/include/c++/4.8/bits/stl_pair.h:206:9: note: template<class ... _Args1,
long unsigned int ..._Indexes1, class ... _Args2, long unsigned int
..._Indexes2> std::pair<_T1, _T2>::pair(std::tuple<_Args1 ...>&,
std::tuple<_Args2 ...>&, std::_Index_tuple<_Indexes1 ...>,
std::_Index_tuple<_Indexes2 ...>)
         pair(tuple<_Args1...>&, tuple<_Args2...>&,
         ^
/usr/include/c++/4.8/bits/stl_pair.h:206:9: note:   template argument
deduction/substitution failed:
In file included from /usr/include/c++/4.8/bits/hashtable.h:35:0,
                 from /usr/include/c++/4.8/unordered_map:47,
                 from test.c:2:
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: note:   mismatched types
‘std::tuple<_Elements ...>’ and ‘int’
  : _M_v(std::forward<_Args>(__args)...) { }
                                       ^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/4.8/memory:62,
                 from test.c:1:
/usr/include/c++/4.8/bits/stl_pair.h:155:9: note: template<class ... _Args1,
class ... _Args2> std::pair<_T1, _T2>::pair(std::piecewise_construct_t,
std::tuple<_Args1 ...>, std::tuple<_Args2 ...>)
         pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>);
         ^
/usr/include/c++/4.8/bits/stl_pair.h:155:9: note:   template argument
deduction/substitution failed:
In file included from /usr/include/c++/4.8/bits/hashtable.h:35:0,
                 from /usr/include/c++/4.8/unordered_map:47,
                 from test.c:2:
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: note:   cannot convert
‘std::forward<int>((* & __args#0))’ (type ‘int’) to type
‘std::piecewise_construct_t’
  : _M_v(std::forward<_Args>(__args)...) { }
                                       ^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/4.8/memory:62,
                 from test.c:1:
/usr/include/c++/4.8/bits/stl_pair.h:150:12: note: template<class _U1, class
_U2, class> constexpr std::pair<_T1, _T2>::pair(std::pair<_U1, _U2>&&)
  constexpr pair(pair<_U1, _U2>&& __p)
            ^
/usr/include/c++/4.8/bits/stl_pair.h:150:12: note:   template argument
deduction/substitution failed:
In file included from /usr/include/c++/4.8/bits/hashtable.h:35:0,
                 from /usr/include/c++/4.8/unordered_map:47,
                 from test.c:2:
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: note:   mismatched types
‘std::pair<_T1, _T2>’ and ‘int’
  : _M_v(std::forward<_Args>(__args)...) { }
                                       ^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/4.8/memory:62,
                 from test.c:1:
/usr/include/c++/4.8/bits/stl_pair.h:144:12: note: template<class _U1, class
_U2, class> constexpr std::pair<_T1, _T2>::pair(_U1&&, _U2&&)
  constexpr pair(_U1&& __x, _U2&& __y)
            ^
/usr/include/c++/4.8/bits/stl_pair.h:144:12: note:   template argument
deduction/substitution failed:
/usr/include/c++/4.8/bits/stl_pair.h:141:38: error: no type named ‘type’ in
‘struct std::enable_if<false, void>’
       template<class _U1, class _U2, class = typename
                                      ^
/usr/include/c++/4.8/bits/stl_pair.h:138:12: note: template<class _U2, class>
constexpr std::pair<_T1, _T2>::pair(const _T1&, _U2&&)
  constexpr pair(const _T1& __x, _U2&& __y)
            ^
/usr/include/c++/4.8/bits/stl_pair.h:138:12: note:   template argument
deduction/substitution failed:
/usr/include/c++/4.8/bits/stl_pair.h:136:27: error: no type named ‘type’ in
‘struct std::enable_if<false, void>’
       template<class _U2, class = typename
                           ^
/usr/include/c++/4.8/bits/stl_pair.h:133:12: note: template<class _U1, class>
constexpr std::pair<_T1, _T2>::pair(_U1&&, const _T2&)
  constexpr pair(_U1&& __x, const _T2& __y)
            ^
/usr/include/c++/4.8/bits/stl_pair.h:133:12: note:   template argument
deduction/substitution failed:
In file included from /usr/include/c++/4.8/bits/hashtable.h:35:0,
                 from /usr/include/c++/4.8/unordered_map:47,
                 from test.c:2:
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: note:   cannot convert
‘std::forward<A*>((* & __args#1))’ (type ‘A*’) to type ‘const
std::unique_ptr<A>&’
  : _M_v(std::forward<_Args>(__args)...) { }
                                       ^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/4.8/memory:62,
                 from test.c:1:
/usr/include/c++/4.8/bits/stl_pair.h:128:17: note: constexpr std::pair<_T1,
_T2>::pair(std::pair<_T1, _T2>&&) [with _T1 = const int; _T2 =
std::unique_ptr<A>]
       constexpr pair(pair&&) = default;
                 ^
/usr/include/c++/4.8/bits/stl_pair.h:128:17: note:   candidate expects 1
argument, 2 provided
/usr/include/c++/4.8/bits/stl_pair.h:124:12: note: template<class _U1, class
_U2, class> constexpr std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&)
  constexpr pair(const pair<_U1, _U2>& __p)
            ^
/usr/include/c++/4.8/bits/stl_pair.h:124:12: note:   template argument
deduction/substitution failed:
In file included from /usr/include/c++/4.8/bits/hashtable.h:35:0,
                 from /usr/include/c++/4.8/unordered_map:47,
                 from test.c:2:
/usr/include/c++/4.8/bits/hashtable_policy.h:195:39: note:   mismatched types
‘const std::pair<_T1, _T2>’ and ‘int’
  : _M_v(std::forward<_Args>(__args)...) { }
                                       ^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/4.8/memory:62,
                 from test.c:1:
/usr/include/c++/4.8/bits/stl_pair.h:112:26: note: constexpr std::pair<_T1,
_T2>::pair(const _T1&, const _T2&) [with _T1 = const int; _T2 =
std::unique_ptr<A>]
       _GLIBCXX_CONSTEXPR pair(const _T1& __a, const _T2& __b)
                          ^
/usr/include/c++/4.8/bits/stl_pair.h:112:26: note:   no known conversion for
argument 2 from ‘A*’ to ‘const std::unique_ptr<A>&’
/usr/include/c++/4.8/bits/stl_pair.h:108:26: note: constexpr std::pair<_T1,
_T2>::pair() [with _T1 = const int; _T2 = std::unique_ptr<A>]
       _GLIBCXX_CONSTEXPR pair()
                          ^
/usr/include/c++/4.8/bits/stl_pair.h:108:26: note:   candidate expects 0
arguments, 2 provided
...

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
@ 2020-08-08 16:08 ` vries at gcc dot gnu.org
  2020-08-10 10:30 ` redi at gcc dot gnu.org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: vries at gcc dot gnu.org @ 2020-08-08 16:08 UTC (permalink / raw)
  To: gcc-bugs

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

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |7.5.0
   Target Milestone|---                         |7.5
         Resolution|---                         |FIXED
             Status|UNCONFIRMED                 |RESOLVED
      Known to fail|                            |4.8.5

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
Can be worked around by using:
...
  m.emplace (1, std::unique_ptr<A> (new A(1)));
...

This PR is probably a duplicate, but I'm not sure which one.

Anyway, this is fixed starting 7.5.0,  so closing it as resolved-fixed, perhaps
someone can mark it a duplicate.

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
  2020-08-08 16:08 ` [Bug c++/96537] " vries at gcc dot gnu.org
@ 2020-08-10 10:30 ` redi at gcc dot gnu.org
  2020-08-10 10:31 ` redi at gcc dot gnu.org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: redi at gcc dot gnu.org @ 2020-08-10 10:30 UTC (permalink / raw)
  To: gcc-bugs

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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|FIXED                       |INVALID

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Not a bug. C++11 and C++14 said for the relevant pair(U&&, V&&) constructor:

Remarks: If U is not implicitly convertible to first_type or V is not
implicitly convertible to second_type this constructor shall not participate in
overload resolution.

That was changed for C++17 by http://wg21.link/n4387 which was accepted into
the C++17 draft in 2015, so you can't expect C++11 compilers released before
then to support the new API.

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
  2020-08-08 16:08 ` [Bug c++/96537] " vries at gcc dot gnu.org
  2020-08-10 10:30 ` redi at gcc dot gnu.org
@ 2020-08-10 10:31 ` redi at gcc dot gnu.org
  2020-08-10 10:34 ` vries at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: redi at gcc dot gnu.org @ 2020-08-10 10:31 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
FWIW the change was implemented for GCC 6.0 by r225189

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2020-08-10 10:31 ` redi at gcc dot gnu.org
@ 2020-08-10 10:34 ` vries at gcc dot gnu.org
  2020-08-10 10:34 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: vries at gcc dot gnu.org @ 2020-08-10 10:34 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #2)
> Not a bug. C++11 and C++14 said for the relevant pair(U&&, V&&) constructor:
> 
> Remarks: If U is not implicitly convertible to first_type or V is not
> implicitly convertible to second_type this constructor shall not participate
> in overload resolution.
> 
> That was changed for C++17 by http://wg21.link/n4387 which was accepted into
> the C++17 draft in 2015, so you can't expect C++11 compilers released before
> then to support the new API.

Thanks for the comment.  Still, if this is a language version issue, I used
-std=c++11 with 7.5.0, shouldn't I then get the same behaviour as with gcc
4.8.5?

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2020-08-10 10:34 ` vries at gcc dot gnu.org
@ 2020-08-10 10:34 ` redi at gcc dot gnu.org
  2020-08-10 10:36 ` redi at gcc dot gnu.org
  2020-08-10 10:36 ` redi at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: redi at gcc dot gnu.org @ 2020-08-10 10:34 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #0)
>   std::unordered_map<int, std::unique_ptr<A>> m;
>   m.emplace (1, new A(1));

This code isn't exception-safe anyway. If allocating a new node in the map
throws an exception your pointer will be leaked.

This will compile on old C++11 compilers *and* be correct:

  m.emplace (1, std::unique_ptr<A>(new A(1)));

For C++14 you should use std::make_unique<A>(1) instead.

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2020-08-10 10:34 ` redi at gcc dot gnu.org
@ 2020-08-10 10:36 ` redi at gcc dot gnu.org
  2020-08-10 10:36 ` redi at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: redi at gcc dot gnu.org @ 2020-08-10 10:36 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #4)
> Thanks for the comment.  Still, if this is a language version issue, I used
> -std=c++11 with 7.5.0, shouldn't I then get the same behaviour as with gcc
> 4.8.5?

No, because N4387 was resolving a number of DRs so we apply it retroactively to
older standard modes. But for compilers released before the defects were
resolved, obviously we only implement the old rules.

The point is that GCC 4.8 is a compiler from 2013 and correctly implements the
spec from that time.

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

* [Bug c++/96537] Missing std::pair constructor
  2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2020-08-10 10:36 ` redi at gcc dot gnu.org
@ 2020-08-10 10:36 ` redi at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: redi at gcc dot gnu.org @ 2020-08-10 10:36 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> ---
... warts and all.

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

end of thread, other threads:[~2020-08-10 10:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-08 16:05 [Bug c++/96537] New: Missing std::pair constructor vries at gcc dot gnu.org
2020-08-08 16:08 ` [Bug c++/96537] " vries at gcc dot gnu.org
2020-08-10 10:30 ` redi at gcc dot gnu.org
2020-08-10 10:31 ` redi at gcc dot gnu.org
2020-08-10 10:34 ` vries at gcc dot gnu.org
2020-08-10 10:34 ` redi at gcc dot gnu.org
2020-08-10 10:36 ` redi at gcc dot gnu.org
2020-08-10 10:36 ` 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).