[glibmm] ustring_Iterator: Declare the copy constructor =default



commit 7b811a0be824675f31a422d40a75bbb5d10e32ad
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Tue Feb 15 13:01:36 2022 +0100

    ustring_Iterator: Declare the copy constructor =default
    
    Avoid warnings from the clang++ compiler.
    
    It's deprecated to implicitly declare a copy constructor, if there
    is a user-defined copy assignment operator.

 glib/glibmm/ustring.h | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/glib/glibmm/ustring.h b/glib/glibmm/ustring.h
index 41165f58..594a2f29 100644
--- a/glib/glibmm/ustring.h
+++ b/glib/glibmm/ustring.h
@@ -198,7 +198,14 @@ public:
   using pointer = void;
 
   inline ustring_Iterator();
-  inline ustring_Iterator(const ustring_Iterator<std::string::iterator>& other);
+  // A std::string::iterator can be copied to a std::string::const_iterator.
+  template <typename T2, typename = typename std::enable_if<
+    std::is_same<std::string::const_iterator, T>::value &&
+    std::is_same<std::string::iterator, T2>::value, T2>::type>
+  inline ustring_Iterator(const ustring_Iterator<T2>& other)
+  : pos_(other.base())
+  { }
+  ustring_Iterator(const ustring_Iterator& other) = default;
   ustring_Iterator& operator=(const ustring_Iterator& other) = default;
 
   inline value_type operator*() const;
@@ -1066,12 +1073,6 @@ inline ustring_Iterator<T>::ustring_Iterator() : pos_()
 {
 }
 
-template <class T>
-inline ustring_Iterator<T>::ustring_Iterator(const ustring_Iterator<std::string::iterator>& other)
-: pos_(other.base())
-{
-}
-
 template <class T>
 inline typename ustring_Iterator<T>::value_type ustring_Iterator<T>::operator*() const
 {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]