#include <iostream>
using namespace std;
enum class Action {A, B};
template <Action a>
void applyAction()
{
std::cout << "Action " << (int)a << std::endl;
}
template <Action... as>
void applyActions() {
using do_= int[];
(void)do_{0, (
applyAction<as>()
,0)...,0};
}
void foo() {
applyActions<Action::A, Action::B>();
}
void bar() {
applyActions<Action::B, Action::A>();
}
int main() {
foo();
bar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZW51bSBjbGFzcyBBY3Rpb24ge0EsIEJ9OwoKdGVtcGxhdGUgPEFjdGlvbiBhPgp2b2lkIGFwcGx5QWN0aW9uKCkKewogICBzdGQ6OmNvdXQgPDwgIkFjdGlvbiAgIiA8PCAoaW50KWEgPDwgc3RkOjplbmRsOwp9Cgp0ZW1wbGF0ZSA8QWN0aW9uLi4uIGFzPgp2b2lkIGFwcGx5QWN0aW9ucygpIHsKCXVzaW5nIGRvXz0gaW50W107Cgkodm9pZClkb197MCwgKCAKCSAgIGFwcGx5QWN0aW9uPGFzPigpCgksMCkuLi4sMH07IAp9Cgp2b2lkIGZvbygpIHsKICBhcHBseUFjdGlvbnM8QWN0aW9uOjpBLCBBY3Rpb246OkI+KCk7Cn0KCnZvaWQgYmFyKCkgewogIGFwcGx5QWN0aW9uczxBY3Rpb246OkIsIEFjdGlvbjo6QT4oKTsKfQoKCgppbnQgbWFpbigpIHsKCWZvbygpOwoJYmFyKCk7CglyZXR1cm4gMDsKfQ==