summaryrefslogtreecommitdiff
path: root/sigc++/tuple-utils
diff options
context:
space:
mode:
authorMurray Cumming <murrayc@murrayc.com>2016-03-08 19:10:30 +0100
committerMurray Cumming <murrayc@murrayc.com>2016-03-08 19:12:57 +0100
commit97df7e3637af7355b51db89e5ebf119742f23681 (patch)
treedfbbe4817937a697e4cc57a62d82439a66e51a43 /sigc++/tuple-utils
parentf622cb70528b62bc851a7e498177de8f73e72345 (diff)
downloadsigc++-97df7e3637af7355b51db89e5ebf119742f23681.tar.gz
tuple_transform_each(): Allow this to be a constexpr.
Diffstat (limited to 'sigc++/tuple-utils')
-rw-r--r--sigc++/tuple-utils/tuple_transform_each.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/sigc++/tuple-utils/tuple_transform_each.h b/sigc++/tuple-utils/tuple_transform_each.h
index 069e3a9..463925d 100644
--- a/sigc++/tuple-utils/tuple_transform_each.h
+++ b/sigc++/tuple-utils/tuple_transform_each.h
@@ -32,6 +32,7 @@ template <template <typename> class T_transformer, std::size_t size_from_index>
struct tuple_transform_each_impl {
// TODO: Avoid the need to pass t_original all the way into the recursion?
template <typename T_current, typename T_original>
+ constexpr
static decltype(auto)
tuple_transform_each(T_current&& t, T_original& t_original) {
//We use std::decay_t<> because tuple_size is not defined for references.
@@ -66,7 +67,9 @@ struct tuple_transform_each_impl {
template <template <typename> class T_transformer>
struct tuple_transform_each_impl<T_transformer, 1> {
template <typename T_current, typename T_original>
- static decltype(auto)
+ constexpr
+ static
+ decltype(auto)
tuple_transform_each(T_current&& t, T_original& t_original) {
//We use std::decay_t<> because tuple_size is not defined for references.
constexpr auto size = std::tuple_size<std::decay_t<T_current>>::value;
@@ -89,7 +92,9 @@ struct tuple_transform_each_impl<T_transformer, 1> {
template <template <typename> class T_transformer>
struct tuple_transform_each_impl<T_transformer, 0> {
template <typename T_current, typename T_original>
- static decltype(auto)
+ constexpr
+ static
+ decltype(auto)
tuple_transform_each(T_current&& t, T_original& /* t_original */) {
//Do nothing because the tuple has no elements.
return std::forward<T_current>(t);
@@ -103,6 +108,7 @@ struct tuple_transform_each_impl<T_transformer, 0> {
* in the original tuple.
*/
template <template <typename> class T_transformer, typename T>
+constexpr
decltype(auto)
tuple_transform_each(T&& t) {
//We use std::decay_t<> because tuple_size is not defined for references.