Imported Upstream version 2.99.2
[platform/upstream/libsigc++.git] / sigc++ / tuple-utils / tuple_for_each.h
index 760b52d..43dab3c 100644 (file)
@@ -29,7 +29,9 @@ template <template <typename> class T_visitor, std::size_t size_from_index,
   typename... T_extras>
 struct tuple_for_each_impl {
   template <typename T>
-  static void
+  constexpr
+  static
+  void
   tuple_for_each(T&& t, T_extras&&... extras) {
     //We use std::decay_t<> because tuple_size is not defined for references.
     constexpr auto size = std::tuple_size<std::decay_t<T>>::value;
@@ -49,7 +51,9 @@ struct tuple_for_each_impl {
 template <template <typename> class T_visitor, typename... T_extras>
 struct tuple_for_each_impl<T_visitor, 1, T_extras...> {
   template <typename T>
-  static void
+  constexpr
+  static
+  void
   tuple_for_each(T&& t, T_extras&&... extras) {
     //We use std::decay_t<> because tuple_size is not defined for references.
     constexpr auto size = std::tuple_size<std::decay_t<T>>::value;
@@ -66,7 +70,9 @@ struct tuple_for_each_impl<T_visitor, 1, T_extras...> {
 template <template <typename> class T_visitor, typename... T_extras>
 struct tuple_for_each_impl<T_visitor, 0, T_extras...> {
   template <typename T>
-  static void
+  constexpr
+  static
+  void
   tuple_for_each(T&& /* t */, T_extras&&... /* extras */) {
     //Do nothing because the tuple has no elements.
   }
@@ -87,6 +93,7 @@ struct tuple_for_each_impl<T_visitor, 0, T_extras...> {
  * @param extras Any extra arguments to pass to @e T_Visitor's visit() method.
  */
 template <template <typename> class T_visitor, typename T, typename... T_extras>
+constexpr
 void
 tuple_for_each(T&& t, T_extras&&... extras) {
   //We use std::decay_t<> because tuple_size is not defined for references.