clang 3.1(trunk) で lambda expression がコンパイルできた

先日 constexpr のために trunk から clang のソースコードを落としてきてビルドしたんですが、lambda expression のコードもコンパイルする事が出来ました。
ひとまず、下記の様なコードだと問題ないなかったです。

[ソース]

#include <vector>
#include <algorithm>
#include <iostream>

int
main(){
    int array[] = {1, 2, 3, 4, 5};
    
    std::for_each(array, array+5, [](int n){
        std::cout << n << std::endl;
    });

    int sum = 0;
    std::for_each(array, array+5, [&](int n){ sum += n; });
    std::cout << sum << std::endl;

    return 0;
}

[出力]

1
2
3
4
5
15

これで以前からの懸念材料であった lambda expression を記述すると clang_complete が死ぬという問題が解消されました。
これでやっと lambda expression で遊ぶ事ができますね!
また、正式にアナウンスがあったわけではないので使用する場合は自己責任で。

[コンパイラ]

  • clang++ (llvm) 3.1 20120216(trunk)