summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2022-01-03 17:10:57 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2022-01-03 17:10:57 +0000
commit9da868abbe640297a81c8a5e32cdc7f7776c295e (patch)
treedc11aef362eb4807c6c77b9ad0cbc0b0588aa470 /lib
parentEncapsulate Ray (diff)
downloadilt-9da868abbe640297a81c8a5e32cdc7f7776c295e.tar.bz2
ilt-9da868abbe640297a81c8a5e32cdc7f7776c295e.tar.xz
ilt-9da868abbe640297a81c8a5e32cdc7f7776c295e.zip
Add transform_array
Wraps std::transform to transform one array into another.
Diffstat (limited to 'lib')
-rw-r--r--lib/util.cpp1
-rw-r--r--lib/util.h14
2 files changed, 15 insertions, 0 deletions
diff --git a/lib/util.cpp b/lib/util.cpp
new file mode 100644
index 0000000..408a76a
--- /dev/null
+++ b/lib/util.cpp
@@ -0,0 +1 @@
+#include "util.h"
diff --git a/lib/util.h b/lib/util.h
new file mode 100644
index 0000000..290492f
--- /dev/null
+++ b/lib/util.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <algorithm> // IWYU pragma: keep
+#include <array>
+#include <cstddef>
+
+template<typename T, std::size_t N>
+constexpr auto
+transform_array(const std::array<T, N> & in, auto && transform)
+{
+ std::array<decltype(transform(in.front())), N> out {};
+ std::transform(in.begin(), in.end(), out.begin(), transform);
+ return out;
+}