在下面的示例中,函数模板返回一个局部变量,即使返回值不是引用,它也会按预期工作。这里有延长寿命的场景吗?“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) 为什么我们不能直接将 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)