1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <iostream>
template <typename In, typename Out = In>
Out match(In value, Out def, In a_in, Out a_out) {
if (value == a_in) return a_out;
return def;
}
template <typename In, typename Out, typename ...Args>
Out match(In value, Out def, In a_in, Out a_out, In b_in, Out b_out, Args ...args) {
if (value == a_in) return a_out;
if (value == b_in) return b_out;
return match(value, def, args...);
}
int main() {
std::cout <<
match(3.0,
"inconnu",
2.5 , "deux virgule cinq",
3.141592, "pi",
3.0 , "trois point zéro")
<< std::endl;
std::cout <<
match(4.0,
"inconnu",
2.5 , "deux virgule cinq",
3.141592, "pi",
3.0 , "trois point zéro")
<< std::endl;
return 0;
} |
Partager