새로운 C++ 11의 std::move()
을 사용할 때, ADL 덕택에 std::
네임 스페이스 접두사없이 move()
이라고 쓸 수 있음에 유의했습니다.std :: move() 대신 move()를 사용하는데있어서 함정이 있습니까?
move()
을 사용하고 계십니까? 함정이 있습니까? std::move()
을 사용하는 것이 더 낫습니까?
샘플 컴파일 가능한 코드는 다음과 같습니다 인수 유형 std
도 경우
#include <iostream>
#include <utility>
#include <vector>
template <typename T>
void print(const char* const descr, const std::vector<T>& v) {
std::cout << descr << ": ";
for (const auto& x : v) {
std::cout << x << ' ';
}
std::cout << std::endl;
}
int main() {
std::vector<int> v{11, 22, 33};
std::vector<int> w = move(v);
print("v", v);
print("w", w);
}
반대로 "'이동()'표준 : : 이동()''청소기보다 본다". 또한'move()'가'std :: move()'보다 더 많은 일을 할 필요가 있고 ADL에 의해 발견 될 필요가 있다면,'move()'는 깨진다. – Griwes