以下のコードのstd::move()
は、Visual Studio 2013 (デバッグ構成あり) でコンパイルすると実行時警告を発行しdest
ますnullptr
。ただし、ソース範囲は空であるため、dest
決してアクセスしないでください。C++ 標準は、これが許可されるべきかどうかについて不明確である可能性がありますか? それは次 のように述べています。
Anullptr
はその要件を満たしているようです。
#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);
}