プリパラを見すぎた人がやりがちなプログラミングミス
本日のギャグです。
よくわからないコンパイルエラーが発生
#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を追加することはできない。
まとめ
テンション マックス!リラックス~