ゲーム作りは楽しい

なんか書く

プリパラを見すぎた人がやりがちなプログラミングミス

本日のギャグです。


よくわからないコンパイルエラーが発生

#include <iostream>
#include <algorithm>

int main()
{
    int a, b;
    std::cin >> a >> b;
    
    int max = std::max(a, b);
    int relax = std::relax(a, b);
    
    std::cout << max << ' ' << relax << std::endl;
}

上記プログラム、一見正しそうですが、実はコンパイルエラーになります。
どこがいけないのでしょうか?

prog.cc:10:22: error: 'relax' is not a member of 'std'; did you mean 'replace'?
   10 |     int relax = std::relax(a, b);
      |                      ^~~~~

エラーを見ると上記のような記載があります。

    int relax = std::relax(a, b);

これは、ついやってしまいがちなミスですが、relax関数はC++の標準ライブラリに定義されていないのです。

こちらの修正方法を調べてたところ、以下の一行を追加することでコンパイルエラーを解消するようでした。

#define relax min

ちなみに、std名前空間に新しく関数を勝手に追加してはいけないので、std::relaxを追加することはできない。

まとめ

テンション マックス!リラックス~