#pragma once #include template auto unroll_bool_function_template(F&& f) { return f.template operator()(); } template auto unroll_bool_function_template(F&& f, const Bool b, const Bools... bs) { if (b) { return unroll_bool_function_template(std::forward(f), bs...); } return unroll_bool_function_template(std::forward(f), bs...); }