忘れっぽいのでとりあえず記するますですにゃーん
普通にぐるぐる回すだけ
template <typename Current, typename... Nexts>
auto func(Current&& c, Nexts&&... n) -> void {
func(std::forward<Nexts>(n)...);
}
void func() {}
型だけで良けりゃ
template <typename Current, typename... Nexts>
auto func(std::tuple<Current, Nexts...>* = 0) -> void {
func(static_cast<std::tuple<Nexts...>*>(nullptr));
}
auto func(std::tuple<>* = 0) {}
と思ったけどこっちがいいかもね
template <typename Current = void, typename... Nexts>
auto func() -> void {
if constexpr(!std::is_same<Current, void>::value) func<Nexts...>();
}
参考
コレジャナイってな人はこっち https://qiita.com/_EnumHack/items/677363eec054d70b298d