Clang で実装されている C++1y を使用してみた

最新版の Clang では C++1y の機能がいくつか実装されているみたいなので試してみた。


C++11 で実装された Uniform initialization と Member-initializers は併用して使用する事はできません。
Member initializers and aggregates はこの制限を緩和するための提案になります。


[main.cpp]

#include <iostream>
#include <string>

int
main(){
    // Binary literals
    std::cout << 0b11 << std::endl;
    std::cout << 0b1001 << std::endl;

    
    // Member initializers and aggregates
    struct X{
        std::string name;
        int age = 14;
    };

    X homu{"homu"};
    std::cout << homu.age << std::endl;
    std::cout << homu.name << std::endl;

    X mami{"mami", 15};
    std::cout << mami.age << std::endl;
    std::cout << mami.name << std::endl;

    return 0;
}

[コンパイル・実行]

$ clang++ -std=c++1y main.cpp -o main.exe
$ main.exe
3
9
14
homu
15
mami


件の2つを併用できなくてぐぬぬ…となる事が結構あるので Member initializers and aggregates の提案は地味に嬉しいですね。