この質問のフォローアップとしてこれを尋ねています。前の質問はほぼ3年前に尋ねられたので、新しい質問をする方が良いと思います.
私がリンクしたその質問の核心は、OPが次のコード行を実行しようとしたことです:
find_if(s.begin(), s.end(), isalnum);
いくつかのコンテナs
で。コード行のコンパイルに失敗しました。OP はこれを実行する必要がありました
find_if(s.begin(), s.end(), ::isalnum);
locale
受け入れられた回答は、 ライブラリとライブラリに isalnum 関数がありcctype
、コンパイラが 2 つの間のあいまいさを解消するのに問題があるため、::
スコープ解決演算子であると述べています。これらのライブラリの 1 つだけを含めてテストしましたが、コンパイラにはまだあいまいさを解消する問題があります。何故ですか?これらのライブラリの 1 つだけを含めた場合、明らかにコンパイラは他のライブラリについて「認識」してはならないので、なぜ競合するのでしょうか?
私の質問の 2 番目の部分は、オペレーターが必要な機能をどのように::
教えてくれるのかということです。isalnum
ありがとう
編集
::
演算子が、必要な関数/変数がグローバル スコープにあることを教えてくれることは知っていますが、それでも私の 2 番目の質問には答えていません。