프로그래밍/c++
C++11 람다를 보다 깔끔하게 쓰는 방법
제페
2015. 9. 19. 22:45
반응형
1 2 3 4 5 6 7 8 9 10 11 | // 비동기 송신을 등록합니다. 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에서 람다를 써서 비동기 핸들러를 설정하는데 코드가 지저분하게 느껴졌다. {}과()이 겹쳐지면서 어디까지가 무슨 코드고 이런 거 구분이 뚜렷하지가 않게 느껴지더라.
어떻게하면 보다 깔끔하게 보일까를 생각했는데 람다를 변수로 지정 가능하다는 게 생각났다.
위 코드는 이렇게 바뀐다.
1 2 3 4 5 6 7 8 9 10 11 | const 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 |
와 정말 대단해~!
반응형