LangDev

C++0x에 람다와 클로져가 추가된다고 합니다.

홍민희

C++0x에 람다클로져가 추가된다고 합니다(via rein). 흠좀무.

Example: Write collection to console

For example, let's say you want to write each of a collection of Widgets to the console.

// Writing a collection to cout, in today's C++, option 1:

for( vector<Widget>::iterator i = w.begin(); i != w.end(); ++i )
    cout << *i << " ";

Or we can leverage that C++ already has a special-purpose ostream_iterator type that does what we want:

// Writing a collection to cout, in today's C++, option 2:

copy( w.begin(), w.end(),
    ostream_iterator<const Widget>( cout, " " ) );

In C++0x, just use a lambda that writes the right function object on the fly:

// Writing a collection to cout, in C++0x:

for_each( w.begin(), w.end(),
    []( const Widget& w ) { cout << w << " "; } );

람다에 클로져라.. 멋지네요ㅎㅎ

종현
// Writing a collection to cout, in C++0x:

for_each( w.begin(), w.end(),
  []( const Widget& i ) { cout << i << " "; } );

로 써도 같은건가요?

mithrandir

네, 예제의 세 가지 방식 모두 동일한 결과를 출력합니다.

홍민희

호옹 매일 functor 만들면서 아 이거 어떻게 안 되나 했는데 좋은데요 !_!

김광영/코에이

정렬 등에 사용되는 비교 연산을 보다 쉽게 일반화할 수 있겠군요.; 근데 C++자체를 별로 안 써서 패스=3

아침놀

이 이야기는 나온지 꽤 되었지요. C++0x 정리하다 만게 있는데.. 그거나 해볼까나.

Closer의 도입으로 boost::lambda는 역사의 뒤안길로 사라지겠군요.

(하지만 컴파일러가 지원해주지 않으면.. OTL)

까막

나름 역사적 뒷북이지 않을까 생각해보삼... (이미 어떤 의미에서 흘러간 옛 언어일지도 모르니까요)

아겔-_-