libstdc++: Fix some warnings in headers
authorJonathan Wakely <jwakely@redhat.com>
Thu, 29 Oct 2020 22:47:22 +0000 (22:47 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 29 Oct 2020 22:47:22 +0000 (22:47 +0000)
These are usually suppressed in system headers, but should be fixed
anyway.

libstdc++-v3/ChangeLog:

* include/bits/parse_numbers.h (_Select_int_base): Avoid
narrowing conversion in constant expression.
* include/experimental/buffer (buffer_copy): Avoid narrowing
conversion.
* include/experimental/internet (hash<>::operator()): Do not
use deprecated 'argument_type' member.
* include/std/variant (variant::emplace): Use cast instead
of implicit conversion from size_t to narrower unsigned type.

libstdc++-v3/include/bits/parse_numbers.h
libstdc++-v3/include/experimental/buffer
libstdc++-v3/include/experimental/internet
libstdc++-v3/include/std/variant

index 5e80907af09fb348c81e0acd86f16089145acf52..923a56c5a9f80ab49b7556d00de051f949e24230 100644 (file)
@@ -266,7 +266,7 @@ namespace __select_int
   template<unsigned long long _Val, typename _IntType, typename... _Ints>
     struct _Select_int_base<_Val, _IntType, _Ints...>
     : conditional_t<(_Val <= __gnu_cxx::__int_traits<_IntType>::__max),
-                   integral_constant<_IntType, _Val>,
+                   integral_constant<_IntType, (_IntType)_Val>,
                    _Select_int_base<_Val, _Ints...>>
     { };
 
index 8ccdb28cc5bae996cce3b52769694cdd92785f03..08d3a365e8d12a8de58469aa126f6544e2ad0ef6 100644 (file)
@@ -315,7 +315,7 @@ inline namespace v1
     inline size_t
     buffer_copy(const _MutableBufferSequence& __dest,
                const _ConstBufferSequence& __source) noexcept
-    { return net::buffer_copy(__dest, __source, size_t{-1}); }
+    { return net::buffer_copy(__dest, __source, size_t(-1)); }
 
 
   // buffer arithmetic:
index f1153b8ff6a781ea759daf7aeed27f033423c8e9..1143ef41a5a0b3227e7b823f3c8e64f52cad340c 100644 (file)
@@ -2393,7 +2393,7 @@ namespace ip
     : __hash_base<size_t, experimental::net::v1::ip::address>
     {
       size_t
-      operator()(const argument_type& __a) const
+      operator()(const experimental::net::v1::ip::address& __a) const
       {
        if (__a.is_v4())
          return _Hash_impl::hash(__a.to_v4());
@@ -2407,7 +2407,7 @@ namespace ip
     : __hash_base<size_t, experimental::net::v1::ip::address_v4>
     {
       size_t
-      operator()(const argument_type& __a) const
+      operator()(const experimental::net::v1::ip::address_v4& __a) const
       { return _Hash_impl::hash(__a.to_bytes()); }
     };
 
@@ -2415,7 +2415,7 @@ namespace ip
     : __hash_base<size_t, experimental::net::v1::ip::address_v6>
     {
       size_t
-      operator()(const argument_type& __a) const
+      operator()(const experimental::net::v1::ip::address_v6& __a) const
       { return _Hash_impl::hash(__a.to_bytes()); }
     };
 
index 17f8bcd638b80926f609cfae2149c7e6d202f0fb..4455ff4f073d2c7ccf981555e491096caa02bc26 100644 (file)
@@ -1512,7 +1512,8 @@ namespace __variant
                }
              __catch (...)
                {
-                 this->_M_index = variant_npos;
+                 using __index_type = decltype(this->_M_index);
+                 this->_M_index = static_cast<__index_type>(variant_npos);
                  __throw_exception_again;
                }
            }
@@ -1559,7 +1560,8 @@ namespace __variant
                }
              __catch (...)
                {
-                 this->_M_index = variant_npos;
+                 using __index_type = decltype(this->_M_index);
+                 this->_M_index = static_cast<__index_type>(variant_npos);
                  __throw_exception_again;
                }
            }