ユーコンプリートミーUbuntu を 16 から 18 にアップグレードするまでは正常に動作していました。
using std::cin;
今では理解できない
名前空間 'std' に 'cin' という名前のメンバーがありません。'min' を意味しましたか?
また、独自のヘッダー ファイルで定義されたクラス名も読み込まれません。
git pull
最新バージョンのYouCompleteMe を再インストールしてみましたgit submodule update
。
また、.vimrc内のlibclangへのパスと.vim/.ycm_extra_conf.py内/usr/lib/llvm-8/lib/libclang.so
のC++標準ライブラリへのパスを確認/更新しました。/usr/include/c++/7/
すべての C++ ソース コードは、ほぼ同じコンパイル フラグでエラーなしでコンパイルされます。
答え1
READMEに従ってYouCompleteMe github ページそして走る
$ echo | clang -v -E -x c++ -
clang version 8.0.0-3~ubuntu18.04.1 (tags/RELEASE_800/final)
...
#include "..." search starts here:
#include <...> search starts here:
/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0
/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/i386-linux-gnu/c++/7.4.0
/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0/backward
/usr/include/clang/8.0.0/include
/usr/local/include
/usr/include/i386-linux-gnu
/usr/include
End of search list.
...
~/.vim/.ycm_extra_conf.py に移動し、フラグ配列の後にパスを追加し、#include <...> search starts here:
それぞれの前に '-isystem' を付けて、古いインクルードを削除します。
flags = [
# ...
'-isystem',
'/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0',
'-isystem',
'/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/i386-linux-gnu/c++/7.4.0',
'-isystem',
'/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0/backward',
# ...
]
vim を再起動すると問題は解決します。