我正在开展一个小项目并遇到以下情况:
std::string myString;
#GetValue() returns a char*
myString = myObject.GetValue();
Run Code Online (Sandbox Code Playgroud)
我的问题是如果GetValue() 返回NULL myString变为空字符串?这是不确定的?还是会发生段错?
的std::move(),因为它检测到在Visual Studio 2013(与调试配置)编译时在下面的代码发出警告,运行时dest是一个nullptr.但是,源范围是空的,因此dest永远不应该访问.C++标准可能不清楚是否允许这样做?它声明: 要求:结果不应在[first,last]范围内.
A nullptr似乎满足了这个要求.
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec;
int* dest = nullptr;
// The range [begin(vec),end(vec)) is empty, so dest should never be accessed.
// However, it results in an assertion warning in VS2013.
std::move(std::begin(vec), std::end(vec), dest);
}
Run Code Online (Sandbox Code Playgroud)