以下代码无法在最近的编译器(g++-5.3、clang++-3.7)上构建。
#include <map>
#include <functional>
#include <experimental/string_view>
void f()
{
using namespace std;
using namespace std::experimental;
map<string, int> m;
string s = "foo";
string_view sv(s);
m.find(sv);
}
clang 返回的错误:
error: no matching member function for call to 'find'
m.find(sv);
~~^~~~
但是不find
应该能够使用可比较的类型吗?Cppreference 提到了以下重载:
template< class K > iterator find( const K& x );
同样的错误发生在boost::string_ref
.