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
   24   25   26   27   28   29   30   31