[Bug libstdc++/90102] Incorrect ambiguous overload with _GLIBCXX_DEBUG
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Apr 16 15:01:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90102
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I'll come back to this for GCC 10.
Slightly better (and not broken) patch:
--- a/libstdc++-v3/include/debug/vector
+++ b/libstdc++-v3/include/debug/vector
@@ -220,11 +220,11 @@ namespace __debug
~vector() = default;
#endif
+#if __cplusplus < 201103L
/// Construction from a normal-mode vector
vector(const _Base& __x)
: _Base(__x) { }
-#if __cplusplus < 201103L
vector&
operator=(const vector& __x)
{
@@ -234,6 +234,12 @@ namespace __debug
return *this;
}
#else
+ /// Construction from a normal-mode vector
+ template<typename _Up,
+ typename = _Require<is_same<__remove_cvref_t<_Up>, _Base>>>
+ vector(const _Up& __x)
+ : _Base(std::forward<_Base>(__x)) { }
+
vector&
operator=(const vector&) = default;
More information about the Gcc-bugs
mailing list