Files
Z3D/include/util/unroll_bool_template.hpp
2024-12-22 16:58:40 +01:00

20 lines
500 B
C++

#pragma once
#include <utility>
template<typename F, bool... Values>
auto unroll_bool_function_template(F&& f)
{
return f.template operator()<Values...>();
}
template<typename F, bool... Values, typename Bool, typename... Bools>
auto unroll_bool_function_template(F&& f, const Bool b, const Bools... bs)
{
if (b)
{
return unroll_bool_function_template<F, Values..., true>(std::forward<F>(f), bs...);
}
return unroll_bool_function_template<F, Values..., false>(std::forward<F>(f), bs...);
}