小编use*_*762的帖子

返回对临时对象的引用时出错

我在 C++ 中有以下模板函数

template<class S, class T> const T& safe_retrieve
(vector<T> const& data, vector<S> const& keys, const S& key)
{
    assert(data.size() == keys.size());
    typename vector<S>::const_iterator it = binary_find(keys.begin(), keys.end(), key);
    assert(it != keys.end());
    size_t index = static_cast<size_t>(it - keys.begin());
    return data.at(index);
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

 error: returning reference to temporary [-Werror=return-local-addr]
Run Code Online (Sandbox Code Playgroud)

我理解此错误的含义,但我不明白为什么我返回的引用是临时的。

c++

1
推荐指数
1
解决办法
692
查看次数

标签 统计

c++ ×1