Xcodeは正常に完了していますが、期待通りのものではありません。実際にあなたは無意識に質問に答えました。あなたが言っただけのようstring
のための関数のシグネチャsubstr()
方法は、次のとおりです。
string substr (size_t pos = 0, size_t n = npos) const;
substr()
へのすべての引数は(引数なしで)、そのためのXcodeに、s.substr()
をデフォルトの割り当てを持っているので、挿入する有効なコード補完ですは本当にs.substr(0, s.npos)
です。これは、デフォルトの引数を持つ任意の数の標準C++関数で確認できます。これを見るのが最も簡単な場所は、STLコンテナコンストラクタです。
例えば、vector
とします。 vectors
はAllocator
を受け取ることができますが、ほとんどの通常の使用ではAllocator
が割り当てられているデフォルトの引数は「十分」です。案の定、vector
コンストラクタのための署名の二つがある:両方の場合において
explicit vector (const Allocator& = Allocator());
explicit vector (size_type n, const T& value= T(), const Allocator& = Allocator());
、Allocator
引数は、デフォルトの割り当てを有し、そして第二に、T
デフォルト値は、デフォルトの割り当てを有します。 vector
を構築するときに今、Xcodeのは示唆して何を見てみましょう:
提案をなし引数リストで実際だけAllocator
取るコンストラクタです。 size_type
だけを使用する提案は、size_type
,T
、およびAllocator
のコンストラクタを実際にはのです。
これについての考え方によっては、Xcodeのバグである場合とそうでない場合があります。理想的には、substr()
のような単純な関数のデフォルト引数で補完を見たいと思っていますが、STLコンテナのコンストラクタの場合は、ほとんど見たくないでしょう。多分それはオプションかもしれませんが、私はこれが修正されていることを期待しません。私は幸せにあなたと一緒にレーダーをdupしたいと思います。
この時点でできることは、バグレポートを提出することです。優秀な説明のために – zneak