小编ter*_*rto的帖子

在函数模板中返回局部变量

在下面的示例中,函数模板返回一个局部变量,即使返回值不是引用,它也会按预期工作。这里有延长寿命的场景吗?“result”变量是本地变量,编译器不会生成任何消息,并且代码也可以正常工作。我预计它会失败,因为返回语句中使用了局部变量,但它有效。

template <typename F>
auto foo(const F& f)
{
    return [f](const std::vector<double>& v)
    {
        std::vector<double> result(v.size());
        std::transform(v.begin(), v.end(), result.begin(), f);
        return result;
    };
}
Run Code Online (Sandbox Code Playgroud)

c++ lambda lifetime c++11

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

Nullptr - 布尔赋值

为什么我们不能直接将 nullptr 分配给 bool 对象?例如,标志对象的赋值会导致错误。Visual Studio 编译器给出:“C++ 类型的值不能分配给类型的实体”。

int main(){

    int x = 10;
    int *ptr = &x;
    bool flag = ptr;
    
    flag = nullptr; 

}
Run Code Online (Sandbox Code Playgroud)

但低于版本工作正常。

int main(){

    int x = 10;
    int *ptr = &x;
    bool flag = ptr;
    ptr = nullptr;
    
    flag = ptr;

}
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×2

c++11 ×1

lambda ×1

lifetime ×1