Page 29 -
P. 29
std::swap을 이용한 이동 의미론
// swap.cpp
...
#include <utility>
... 2
template <typename T>
void swap(T& a, T& b){ 유틸리티
T tmp(std::move(a));
a= std::move(b);
b= std::move(tmp);
}
2.2 함수 어댑터 C++ STANDARD LIBRARY
std::bind와 std::function은 서로 궁합이 잘 맞는다. std::bind는 새로운 함수 오브젝트를 동적으
로 생성하고, std::function은 이렇게 생성된 임시 함수 오브젝트를 받아서 변수에 바인딩한다. 두
함수 모두가 함수형 프로그래밍에서 도입한 강력한 도구이며 <functional> 헤더에 정의돼 있다.
함수 오브젝트를 생성해서 바인딩하기
// bindAndFunction.cpp
...
#include <functional>
...
// placehoder인 _1과 _2를 위한 디렉티브
using namespace std::placeholders;
double divMe(double a, double b){
return double(a/b);
}
int main(){
...
// 함수 오브젝트 직접 호출하기
std::cout << "1/2.0= " << std::bind(divMe, 1, 2.0)() << std::endl;
45
c++_06.indd 45 2021-11-19 오전 9:25:45