-
C++11 람다를 보다 깔끔하게 쓰는 방법프로그래밍/c++ 2015. 9. 19. 22:45반응형1234567891011// 비동기 송신을 등록합니다.socket.async_send(buffer(sendChunk, sendBytes),strand.wrap([this, buffer = std::move(sendBuffer)](const auto& error, size_t bytes) // 람다{// 완료 함수if (error){// 오류를 알린다.this->on_error(error);}} // 람다 끝));
cs Vs2015에서 람다를 써서 비동기 핸들러를 설정하는데 코드가 지저분하게 느껴졌다. {}과()이 겹쳐지면서 어디까지가 무슨 코드고 이런 거 구분이 뚜렷하지가 않게 느껴지더라.
어떻게하면 보다 깔끔하게 보일까를 생각했는데 람다를 변수로 지정 가능하다는 게 생각났다.
위 코드는 이렇게 바뀐다.
1234567891011const auto handler = [this, buffer = std::move(buffer)](const auto& error, size_t bytes){if (error){// 오류를 알린다.this->on_error(error);}};// 비동기 송신을 등록합니다.socket.async_send(asio::buffer(buffer_data, size), strans.wrap(handler));cs 와 정말 대단해~!
반응형'프로그래밍 > c++' 카테고리의 다른 글
std::bind 사용 예제 (0) 2015.10.25 unique_ptr 캐스팅 std::unique_ptr<Derived> => std::unique_ptr<Base> (0) 2015.10.18 boost::system::error_code를 std::error_code로 바꿔주기 (0) 2015.07.26 [c++11] std::weak_ptr의 사용 (0) 2015.07.23 c++11에 추가된 override 키워드와 필요성 (0) 2015.07.13