タイトルの通りで、 std::is_arithmetic_v
を含むコードを clang++-5.0
でコンパイルしたらエラーが出た。
clang はバージョン 5.0 でC++17 に対応しているはずなのにおかしい。
原因は C++ の標準ライブラリが C++17 に対応していないことにあった。 clang++ はデフォルトだと標準ライブラリとして libstdc++ を用いるが、 このバージョンが自分の環境だと 5.4 で C++17 に対応していなかった。
というわけで新しい libstdc++ を入れたら直った。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install libstdc++-8-dev
標準ライブラリとして llvm の libc++ を使う手もあるが、 ppa が用意されていないためインストールがめんどくさいのでやめた。