日記

内容の正しさは保証しません

ノート 2/17

最近再びC++を書くようになった。元々そんなに書いていないが、リハビリ中。

#include <tuple>
#include <functional>

template <class Tuple, class F>
void g(Tuple&& tuple, F&& f)
{
	std::apply([](auto&& ...args) { (f(args), ...); }, tuple);
}

tupleに対してf(x_0), f(x_1), ..., f(x_n-1)がやりたかった。
仕組みをメモ
(1) applyによりtupleを分解する
(2) fold式 (f(args), ...)により(f(args#0), (f(args#1), (f(args#2), (...) )))を書いたことになる

参照
cpp17book/019-cpp17-core-fold-expressions.md at master · EzoeRyou/cpp17book · GitHub