From cd8581574be22f33944446f54c86ad66cba6697d Mon Sep 17 00:00:00 2001 From: Jonathan Sieber Date: Thu, 30 Jan 2020 14:19:52 +0100 Subject: [PATCH] forEachIndex as "constexpr for": Iterate over a sequence with compile-time available indices --- src/meta17.lib/meta17/IndexPack.iterate.h | 13 +++++++++++++ src/meta17.lib/meta17/meta17.qbs | 1 + 2 files changed, 14 insertions(+) create mode 100644 src/meta17.lib/meta17/IndexPack.iterate.h diff --git a/src/meta17.lib/meta17/IndexPack.iterate.h b/src/meta17.lib/meta17/IndexPack.iterate.h new file mode 100644 index 0000000..32816a0 --- /dev/null +++ b/src/meta17.lib/meta17/IndexPack.iterate.h @@ -0,0 +1,13 @@ +#pragma once +#include "Index.h" +#include "IndexPack.h" + +namespace meta17 { + +/// "constexpr for": Iterate over a sequence with compile-time available indices +template +constexpr auto forEachIndex(IndexPack, Callable &&callable) { + return (..., callable(Index{})); +} + +} // namespace meta17 diff --git a/src/meta17.lib/meta17/meta17.qbs b/src/meta17.lib/meta17/meta17.qbs index 68193d9..f27bcc2 100644 --- a/src/meta17.lib/meta17/meta17.qbs +++ b/src/meta17.lib/meta17/meta17.qbs @@ -50,6 +50,7 @@ Product { "IndexPack.extract.h", "IndexPack.for.h", "IndexPack.h", + "IndexPack.iterate.h", "IndexPack.make.h", "IndexPack.ops.h", "IndexPack.trait.h",