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:

  1. 推定ガイドきた!!

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

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

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.