td::forward가 가장 많이 쓰이는 곳은 보편 참조 매개변수로 받아서 처리하는 로직입니다.
// lvalue를 캐치하는 함수
void Catch(Person& p, const char* name)
{
cout << name << "lvalue catch" << endl;
}
// rvalue를 캐치하는 함수
void Catch(Person&& p, const char * name)
{
cout << name << "rvalue catch" << endl;
}
// 전달받은 obj를 std::forward를 통해서 catch 함수로 전달합니다.
template<typename T>
void ForwardingObj(T&& obj, const char* name)
{
Catch(std::forward<T>(obj), name);
}
int _tmain(int argc, _TCHAR* argv[])
{
Person p1("ahn", 1985);
ForwardingObj(p1, "p1\t\t=\t");
ForwardingObj(std::move(p1), "std::move(p1)\t=\t");
return 0;
}
수행결과
반응형
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
error C4596: illegal qualified name in member (0) | 2022.03.03 |
---|---|
[Modern C++] std::move , 간단 예시 (0) | 2022.03.03 |
첫번째 가변인자로 오버로딩 처리 (0) | 2021.06.22 |
std::map::emplace_hint (0) | 2021.03.21 |
C++ 캐스팅 Static, Dynamic cast (0) | 2020.04.27 |