Clang(svn) に Relaxing constraints on constexpr functions が実装されていた

多分、先月末だと思うんですが Clang に Relaxing constraints on constexpr functions が実装されました。
C++11 の constexpr 関数はいろいろと制限があったんですが、C++14 ではこれが緩和され、一般ユーザー(非中3女子)にも扱いやすくなります。
例えば次のようなコードを記述することができます。

[ソース]

constexpr int
abs(int x){
    if( x < 0 ){
        x = -x;
    }
    return x;
}


template<int Size>
constexpr int
max(int const (&array)[Size]){
    int result = array[0];
    for(int i = 1 ; i < Size ; ++i){
        if( array[i] > result ){
            result = array[i];
        }
    }
    return result;
}


int
main(){
    static_assert(abs( 4) == 4, "");
    static_assert(abs(-4) == 4, "");

    constexpr int v[] = {5, 7, 1, 9, 6, 2, 8, 10, 4, 3};
    constexpr int result = max(v);
    static_assert(result == 10, "");
    return 0;
}


このようにかなり制限が緩和されています。
これを試してみたい方は SVN からソースコードを落としてきて、LLVM/Clang を自ビルドしてください。