utility: container_traits: define C++17 _v aliases

Define C++17 'foo_v' style aliases and replace usages of
'foo<...>::value' with them.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I24d28e40ef20e24f97391dbf8fcab2f881f2ff94
diff --git a/include/sdbusplus/message/append.hpp b/include/sdbusplus/message/append.hpp
index 9e9827b..a0ac9b5 100644
--- a/include/sdbusplus/message/append.hpp
+++ b/include/sdbusplus/message/append.hpp
@@ -88,7 +88,7 @@
 // std::vector/map/unordered_map/set need loops
 template <typename T>
 struct can_append_multiple<
-    T, typename std::enable_if_t<utility::has_const_iterator<T>::value>> :
+    T, typename std::enable_if_t<utility::has_const_iterator_v<T>>> :
     std::false_type
 {};
 // std::pair needs to be broken down into components.
@@ -260,7 +260,7 @@
 /** @brief Specialization of append_single for containers (ie vector, array,
  * set, map, etc) */
 template <typename T>
-struct append_single<T, std::enable_if_t<utility::has_const_iterator<T>::value>>
+struct append_single<T, std::enable_if_t<utility::has_const_iterator_v<T>>>
 {
     template <typename S>
     static void op(sdbusplus::SdBusInterface* intf, sd_bus_message* m, S&& s)
diff --git a/include/sdbusplus/message/read.hpp b/include/sdbusplus/message/read.hpp
index 46721f8..ea58eec 100644
--- a/include/sdbusplus/message/read.hpp
+++ b/include/sdbusplus/message/read.hpp
@@ -91,8 +91,8 @@
 // std::vector/map/unordered_vector/set need loops
 template <typename T>
 struct can_read_multiple<
-    T, typename std::enable_if_t<utility::has_emplace_method<T>::value ||
-                                 utility::has_emplace_back_method<T>::value>> :
+    T, typename std::enable_if_t<utility::has_emplace_method_v<T> ||
+                                 utility::has_emplace_back_method_v<T>>> :
     std::false_type
 {};
 
@@ -233,8 +233,7 @@
 
 /** @brief Specialization of read_single for std::vectors. */
 template <typename T>
-struct read_single<T,
-                   std::enable_if_t<utility::has_emplace_back_method<T>::value>>
+struct read_single<T, std::enable_if_t<utility::has_emplace_back_method_v<T>>>
 {
     template <typename S>
     static void op(sdbusplus::SdBusInterface* intf, sd_bus_message* m, S&& s)
@@ -271,7 +270,7 @@
 
 /** @brief Specialization of read_single for std::map. */
 template <typename T>
-struct read_single<T, std::enable_if_t<utility::has_emplace_method<T>::value>>
+struct read_single<T, std::enable_if_t<utility::has_emplace_method_v<T>>>
 {
     template <typename S>
     static void op(sdbusplus::SdBusInterface* intf, sd_bus_message* m, S&& s)
diff --git a/include/sdbusplus/message/types.hpp b/include/sdbusplus/message/types.hpp
index 1adc9b4..3c956b0 100644
--- a/include/sdbusplus/message/types.hpp
+++ b/include/sdbusplus/message/types.hpp
@@ -222,7 +222,7 @@
 {};
 
 template <typename T>
-struct type_id<T, std::enable_if_t<utility::has_const_iterator<T>::value>> :
+struct type_id<T, std::enable_if_t<utility::has_const_iterator_v<T>>> :
     std::false_type
 {
     static constexpr auto value = std::tuple_cat(
diff --git a/include/sdbusplus/utility/container_traits.hpp b/include/sdbusplus/utility/container_traits.hpp
index eb5d625..2ad993a 100644
--- a/include/sdbusplus/utility/container_traits.hpp
+++ b/include/sdbusplus/utility/container_traits.hpp
@@ -30,6 +30,9 @@
     static constexpr bool value = sizeof(test<T>(0)) == sizeof(yes);
 };
 
+template <typename T>
+inline constexpr bool has_const_iterator_v = has_const_iterator<T>::value;
+
 /** has_emplace_method - Determine if type has a method template named emplace
  *
  *  @tparam T - Type to be tested.
@@ -55,6 +58,9 @@
         std::is_same_v<std::true_type, decltype(test<T, dummy>(nullptr))>;
 };
 
+template <typename T>
+inline constexpr bool has_emplace_method_v = has_emplace_method<T>::value;
+
 /** has_emplace_method - Determine if type has a method template named
  * emplace_back
  *
@@ -81,5 +87,9 @@
         std::is_same_v<std::true_type, decltype(test<T, dummy>(nullptr))>;
 };
 
+template <typename T>
+inline constexpr bool has_emplace_back_method_v =
+    has_emplace_back_method<T>::value;
+
 } // namespace utility
 } // namespace sdbusplus