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
推定ガイドきた!!
ReplyDeleteVSが採用するのは何年後でしょうかね、
VSでC++17を書く予定なんて全くないので、違う意味で楽しみにしてます。
どんどんネーティブJS化していくC++。まぁ、それでよいのだと思いますけど。今は。
ReplyDeleteVCの今年版でついにマルチラインconstexprに対応するので今更ワクワクしているのですよね。
とりあえず、最近暇なのでなんとなくGUIライブラリとマルチメディアライブラリがほしくなってます。