21 lines
395 B
C
21 lines
395 B
C
|
#pragma once
|
||
|
|
||
|
#include <functional>
|
||
|
|
||
|
template<typename T>
|
||
|
void on(T what, std::tuple<T, std::function<void()>> match)
|
||
|
{
|
||
|
auto [a,b] = match;
|
||
|
if (what == a)
|
||
|
b;
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void on(T what, std::tuple<T, std::function<void()>> match, std::tuple<T, std::function<void()>> others)
|
||
|
{
|
||
|
auto [a,b] = match;
|
||
|
if (what == a)
|
||
|
b;
|
||
|
else
|
||
|
on(what, others);
|
||
|
}
|