以下代码在我的 vc9 版本上编译:
wstring test2;
if (test2.find(L'c') == wstring.npos)
{
}
但就其本身而言
wstring.npos;
才不是。(wstring::npos;
工作正常)在我看来,这是 100% 错误的。起初我认为可能正在构建一个 wstring 并且正在访问 npos 成员 ala wstring().npos
,但快速尝试进入该行建议否则。用我自己的一类结果模拟同样的情况
警告 C4832:令牌“。” 在 UDT 'Foo' 之后是非法的
但仍然编译。
只是为了我的理智 - 这种语法不应该工作,对吧?鉴于它确实有效,为什么表达式wstring.npos;
会失败?