| 12
 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