Compiler Explorer
DRANK

void fizzbuzz() { for (int i = 1; i <= 100; ++i) { inspect (std::pair(i%3, i%5)) { [0 , 0 ] => { std::cout << "fizzbuzz\n"; } [0 , __] => { std::cout << "fizz\n"; } [__, 0 ] => { std::cout << "buzz\n"; } [__, __] => { std::cout << i << '\n'; } }; } } int main() { fizzbuzz(); }

godbolt.org
Related Topics:
1 comments
    • C++23 に向けて提案されている新しいコア言語機能「パターンマッチング」の実験的実装をオンライン C++ コンパイラ「Compiler Explorer」上で試せるように
    • ターゲットコンパイラとして x86-64 clang (experimental pattern matching) を選択することで機能が有効に
    • Fizz Buzz をパターンマッチングで記述してみるサンプル
    #include <iostream>
    #include <utility>
    
    void fizzbuzz() {
      for (int i = 1; i <= 100; ++i) {
        inspect (std::pair(i%3, i%5)) {
          [0 , 0 ] => { std::cout << "fizzbuzz\n"; }
          [0 , __] => { std::cout << "fizz\n"; }
          [__, 0 ] => { std::cout << "buzz\n"; }
          [__, __] => { std::cout << i << '\n'; }
        };
      }
    }
    
    int main() {
        fizzbuzz();
    }