[Bug libstdc++/89510] New: new_allocator::construct needs to be constrained
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Feb 26 17:44:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89510
Bug ID: 89510
Summary: new_allocator::construct needs to be constrained
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
The construct member has an exception specification which might cause errors
outside the immediate context when trying to determine if the function is
callable.
We should either remove the exception specification (which would be a step
backwards) or should constrain the function using enable_if.
This isn't currently causing issues because we only use the function in
contexts where it's required to work anyway. However, the internal
__is_copy_insertable and __is_move_insertable traits do attempt to check if the
construct() function template is invocable, and so could hit this issue.
Currently we don't use __is_copy_insertable, and only use __is_move_insertable
in contexts where move insertion into std::vector is required to be valid
anyway.
Any other allocators that have a conditional exception specification (including
at least malloc_allocator) need the same change.
More information about the Gcc-bugs
mailing list