[Bug libstdc++/114147] [11/12/13 Regression] tuple allocator-extended constructor requires non-explicit default constructor

2024-02-28 Thread victor.dyachenko at protonmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114147

--- Comment #4 from __vic  ---
The latest gcc-14-20240225 snapshot doesn't include this fix. Is there any
chance to have this fixed in 14.1 release?

[Bug libstdc++/114147] tuple allocator-extended constructor requires non-explicit default constructor

2024-02-28 Thread victor.dyachenko at protonmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114147

--- Comment #2 from __vic  ---
Shouldn't this be added?

  template::value, _T1, _T2> = true>
explicit
_GLIBCXX20_CONSTEXPR
tuple(allocator_arg_t __tag, const _Alloc& __a)
: _Inherited(__tag, __a) { }

[Bug libstdc++/114147] tuple allocator-extended constructor requires non-explicit default constructor

2024-02-28 Thread victor.dyachenko at protonmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114147

--- Comment #1 from __vic  ---
Why _ImplicitDefaultCtor is required here?

  template::value, _T1, _T2> = true>
_GLIBCXX20_CONSTEXPR
tuple(allocator_arg_t __tag, const _Alloc& __a)
: _Inherited(__tag, __a) { }

Missing overload for explicit tuple(allocator_arg_t, ...)?

[Bug libstdc++/114147] New: tuple allocator-extended constructor requires non-explicit default constructor

2024-02-28 Thread victor.dyachenko at protonmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114147

Bug ID: 114147
   Summary: tuple allocator-extended constructor requires
non-explicit default constructor
   Product: gcc
   Version: 10.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: victor.dyachenko at protonmail dot com
  Target Milestone: ---

GCC 10.1 fails to compile this code (GCC 9.1 is OK):

#include 
#include 

struct C {
explicit C() = default;
};

int main()
{
std::tuple t(std::allocator_arg, std::allocator{});
}