2017-01-13

GCCがC++17のコア言語機能を実装完了

Hacker Newsで話題になっていて知ったのだが、GCCがいつのまにか、C++17の現ドラフトの全コア言語機能を実装している。

C++ Standards Support in GCC - GNU Project - Free Software Foundation (FSF)

とうとう、なかなか実装されなかったクラステンプレートのコンストラクターからの実引数推定も試すことが出来た。

#include <iterator>


template < typename T >
    struct X
    {
        X( T t ) { }
        template < typename Iterator >
        X( Iterator first, Iterator last ) { }
    } ;
// deduction guide
template < typename Iterator >
    X( Iterator, Iterator ) -> X< typename std::iterator_traits<Iterator>::value_type > ;


int main()
{
    // X<int>
    X x1(0) ;
    
    int a[] = {1,2,3} ;
    // X<int>
    X x2(std::begin(a), std::end(a))  ;
}

これが動く。感動だ。

ドワンゴ広告

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0

2

2 comments:

Anonymous said...

推定ガイドきた!!

VSが採用するのは何年後でしょうかね、
VSでC++17を書く予定なんて全くないので、違う意味で楽しみにしてます。

Anonymous said...

どんどんネーティブJS化していくC++。まぁ、それでよいのだと思いますけど。今は。
VCの今年版でついにマルチラインconstexprに対応するので今更ワクワクしているのですよね。
とりあえず、最近暇なのでなんとなくGUIライブラリとマルチメディアライブラリがほしくなってます。