ran*_*ght 5 c++ compiler-errors clang
我有一段代码可以正常使用MSVC,但无法使用clang ++进行编译
void MyCass::someMethod()
{
std::wstring key(...);
auto& refInstance = m_map.find(key); // error here
}
Run Code Online (Sandbox Code Playgroud)
其中m_map定义为
std::map<const std::wstring, std::shared_ptr<IInterface>> m_map;
Run Code Online (Sandbox Code Playgroud)
和clang抱怨
non-const lvalue reference cannot bind to incompatible temporary
Run Code Online (Sandbox Code Playgroud)
我有点明白,临时正在创建,但不知道如何解决这个问题.有任何想法吗?
rvalues不能绑定到非const引用.MSVC有一个"扩展允许这样做.要符合标准,你需要
const auto& refInstance = m_map.find(key);
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个迭代器.使用对迭代器的引用是不常见的.价值很好:
auto refInstance = m_map.find(key);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2664 次 |
| 最近记录: |