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容器构造函数,您可能几乎从不想看到它们。也许这可能是一个选择,但我不希望看到这个更正。尽管如此,我还是很乐意与你合作。
我相当确信,您现在可以做的最好的事情就是提交一份错误报告。 – zneak