SlideShare a Scribd company logo
1 of 33
C++14の概要(draft)
高橋晶(Akira Takahashi)
id:faith_and_brave
@cpp_akira
Boost.勉強会#11 2013/06/01(土)
C++14とは
C++11のバグ修正&マイナーアップデートバージョン。
当初は、C++98に対するC++03程度の修正を行う予定
だったが、いろいろと機能追加が行われることになった。
2014年中に策定される予定。すでに新機能の受け入れは
締め切られた。
C++14のあと、C++17を目指すC++1y(仮称)も予定されて
いる。
コア言語
• 2進数リテラル
• 実行時サイズの配列
• 通常の関数の戻り値型推論
• ジェネリックラムダ
• 一般化されたラムダキャプチャ
• constexpr関数の制限緩和
• 変数テンプレート
• 軽量コンセプト
2進数リテラル
int x = 0b1100; // x == 12
0bもしくは0Bプレフィックスを付けることで、
数値の2進数リテラルを記述できるようになる。
実行時サイズの配列
void f(int n)
{
int ar[n]; // 要素数nの配列ar
}
配列の要素数に、実行時の値を指定できるようにするとい
うもの。
C99とは「sizeofがとれない」等、細かい部分で非互換。
規定はされないが、スタックからメモリアロケートされる
可能性がある。
通常の関数の戻り値型推論
auto f(); // 関数f()の宣言。この時点では戻り値の方は「不明」。
auto f() { return 3; } // 関数f()の定義。戻り値の型はint。
int x = f(); // x == 3
ラムダ式と同様に、通常の関数でもreturn文から戻り値の
型を推論できるようにしよう、というもの。
ジェネリックラムダ
vector<X> v = {3, 1, 4};
sort(v.begin(), v.end(), [](const auto& a, const auto& b) {
return a < b;
});
ラムダ式のパラメータがジェネリックにできるようになる。
ラムダ式のパラメータをジェネリックにしたい場合は、
パラメータの型をautoにする。以下のような関数オブジェ
クトが作られる:
struct F {
template <class T, class U>
bool operator()(const T& a, const U& b) const
{ return a < b; }
};
一般化されたラムダキャプチャ
int x = 3;
// xをコピーキャプチャした変数y、xを参照キャプチャした変数z
auto f = [y = x, &z = x] { … }
ラムダ式のキャプチャの際に、ひとつの変数に複数のキャ
プチャ方法を指定できるようになる。
これは、ムーブキャプチャの代替として使用できる。
promise<int> p;
future<int> f = p.get_future();
thread t([p = move(p)] { p.set_value(3); });
…
constexpr関数の制限緩和
constexpr int abs(int x)
{
if (x < 0) // OK : if文による条件分岐
x = -x; // OK : 変数書き換え
return x;
}
• if文、switch文による条件分岐の許可。
• for文、while文、do-while文によるループの許可。
• void戻り値型の許可
– パラメータの参照で書き換える
• 初期化を伴う変数宣言の許可
– static、thread_localは除く
• 変数書き換えの許可。
変数テンプレート
template <class T> // 円周率
constexpr T pi = T(3.1415926535897932385);
template <class T> // 円の面積
T circular_area(T r) {
return pi<T> * r * r;
}
変数定義にテンプレートを使用できるようにする。
特殊化可能。
軽量コンセプト
// <演算子を持っている、という制約の定義
template <class T>
constexpr bool LessThanComparable()
{ return has_less<T>::value; }
C++11で入らなかったコンセプトの軽量版。
テンプレートの型制約機能。
// 制約テンプレート
template <LessThanComparable T>
T min(T a, T b)
{ return a < b ? a : b; }
制約はconstexpr述語関数として記述する。
制約によるオーバーロードも可能。
ライブラリ
• make_unique()
• exchange()
• コンパイル時整数シーケンス
• tupleの型指定get()
• quotedマニピュレータ
• ユーザー定義リテラルライブラリ
• Type Traitsのエイリアステンプレート版
• optional型
• 実行時サイズの配列
• 共有ミューテックス
• ファイルシステム
• ネットワークライブラリの基本的な機能
make_unique()
unique_ptr<X> p = make_unique<X>(ctor_args...);
std::unique_ptrのヘルパ関数。
make_unique()の引数には、対象となる型の
コンストラクタ引数を渡す。
exchange()
// vectorの要素をカンマ区切りで出力する
template <class T>
void print(const vector<T>& v) {
bool first = true;
cout << '{';
for (const T& x : v) {
if (!exchange(first, false)) { // 最初の1回だけカンマ出力しない
cout << ',';
}
cout << x;
}
cout << '}';
}
第1引数の値を第2引数の値で置き換えて、変更前の値を
返す関数。
コンパイル時整数シーケンス
// タプルを展開して関数の引数として渡す
template<typename F, typename Tuple, size_t... I>
auto apply_(F&& f, Tuple&& args, index_sequence<I...>)
{ return forward<F>(f)(get<I>(forward<Tuple>(args))...); }
template<typename F, typename Tuple,
typename Indices = make_index_sequence<tuple_size<Tuple>::value>>
auto apply(F&& f, Tuple&& args)
{ return apply_(forward<F>(f), forward<Tuple>(args), Indices()); }
主にtupleの展開のために使用する、整数のシーケンス
template <std::size_t...> struct index_sequence {};
apply([](int, char, double) {}, make_tuple(3, 'a', 1.23));
tupleの型指定get()
tuple<int, char, double> t(1, 'a', 1.23);
char& c = get<char>(t); // c == 'a'
tupleを型の集合と見なし、N番目ではなく、指定した型の
要素を取得する
存在しない型を指定した場合はコンパイルエラーになる。
quotedマニピュレータ
std::cout << "She said ¥"Hi!¥"" << std::endl;
std::cout << quoted("She said ¥"Hi!¥"") << std::endl;
文字列中のエスケープ文字を出力に含めるための、マニピュ
レータ。CSVやXMLといったフォーマットで必要になる。
Boost.Iostreams由来。
She said "Hi!"
"She said ¥"Hi!¥""
ユーザー定義リテラルライブラリ
// 文字列
auto s = "hello"s; // "hello"sはstring型リテラル
auto s = U"hello"s; // u32"hello"sはu32string型リテラル
// 時間
auto m = 3ms; // 3msはmilliseconds型
C++11で入った、リテラルに対するサフィックスを定義
する機能を使用した、リテラルの型付けライブラリ
namespace std {
inline namespace literals {
inline namespace chrono_literals {
constexpr chrono::milliseconds operator""ms(unsigned long long);
}}}
考えられている名前空間:
std::ms or std::literals::ms or std::chrono_literals::ms
Type Traitsのエイリアステンプレート版
template <class T>
using remove_const_t = typename remove_const<T>::type;
C++11のType Traitsライブラリに対する、エイリアステン
プレートのラッパーを定義する。
using result = remove_const_t<const int>; // result == int
名前に_tサフィックスが付いているのと、::typeを書く
必要がなくなるのが特徴。
エイリアステンプレートの制限により、特殊化はできない。
optional型
optional<int> a = 3; // 有効値3を保持する
optional<int> b = nullopt; // 無効値を保持する
if (a) { // 有効値か否かを判定
int x = a.value(); // 値を取り出す
}
optional<X> c {in_place, "res1"}; // Xのコンストラクタ引数から有効値を構築
c.emplace("res1"); // Xのコンストラクタ引数で再初期化
有効値と無効値の統一的な表現のための、optionalクラス
を定義する。boost::optional由来。
実行時サイズの配列
void f(int n)
{
dynarray<int> ar(n); // 要素数nのint型配列
// 要素数の取得
size_t size = ar.size();
// イテレータインタフェースによる操作
for_each(ar.begin(), ar.end(), g);
}
実行時の要素数を持つ配列、dynarrayクラスを定義する。
共有ミューテックス
shared_mutex mtx;
void reader()
{
shared_lock<shared_mutex> lock(mtx); // mtx.lock_shared()
// ... 共有データへの読み込みアクセス ...
} // mtx.unlock_shared()
void writer()
{
lock_guard<shared_mutex> lock(mtx); // mtx.lock()
// ... 共有データへの書き込みアクセス ...
} // mtx.unlock()
multiple-reader / single-writerなミューテックスである
shared_mutexクラスを定義する。
ファイルシステム
string s = read_utf8_data();
path p = u8path(s); // UTF-8のパス
create_directory(p); // ディレクトリ作成
// ファイルコピー
copy_file(path("a.txt"), path("b.txt"));
// 最終更新日時を取得(chrono::time_point)
file_time_type time = last_write_time(path("a.txt"));
ファイル属性、パス、ディレクトリのサポート。
Boost.Filesystem V3由来 + Chrono。
ネットワークライブラリの基本的な機能
C++14段階では、ネットワークバイトオーダーの変換機能
のみ。
// ホストがリトルエンディアン、
// ネットワークがビッグエンディアンの場合
// xはDD, CC, BB, AAのバイトオーダーで並ぶ
uint32_t x = 0xAABBCCDD;
// resultはAA, BB, CC, DDのバイトオーダーで並ぶ
uint32_t result = htonl(x); // host to network long
• ホストからネットワークへの変換
– htonl()とhtons()、およびテンプレート版のhton()。
• ネットワークからホストへの変換
– ntohl()とntohs()、およびテンプレート版のntoh()。
C++14に現状入らないもの
• モジュールシステム
• トランザクショナル・メモリ
• Rangeライブラリ
• 並行ライブラリの強化
– 並行アルゴリズム
– 並行データ構造(キュー)
– パイプライン
– ラッチ
• 非同期操作の強化
– async/await
• コルーチン
• SIMD
• 多倍長整数
• 文字列のsplit/join、検索アルゴリズム
• 整数リテラルの区切り(int a = 123_456;)
• any、variant
C++1yやC++22に回されるかもしれない機能
その他の状況と議論場所
最後に、C++14やC++1yについての議論場所について
話します。
• 標準C++の議論に参加するにはどうすればいいか。
• 最新のC++情報はどこで手に入るのか。
C++11までの議論グループ
• コア言語(CWG, Mike Miller)
• 進化(EWG, Bjarne Stroustrup)
• ライブラリ(LWG, Alisdair Meredith)
• ライブラリ進化(LWEG, Beman Dawes)
C++11までは、以下の4グループに分かれて議論が行
われていた:
http://isocpp.org/std/the-committee
Study Group
C++14/C++1y以降では、さらに細分化した専門家グループ
(Study Group)で議論が行われている:
• SG1 並行・並列(Hans Boehm)
• SG2 モジュール(Doug Gregor)
• SG3 ファイルシステム(Beman Dawes)
• SG4 ネットワーク(Kyle Kloepper)
• SG5 トランザクショナルメモリ(Michael Wong)
• SG6 数値演算 (Lawrence Crowl)
• SG7 リフレクション (Chandler Carruth)
• SG8 コンセプト (Matt Austern)
• SG9 Range (Marshall Clow)
• SG10 機能テスト (Clark Nelson)
• SG11 データベース(Bill Seymour)
• SG12 未定義の振る舞い(Gabriel Dos Reis)
いくつかのStudy Groupは公開されていて、誰でも議論に参加できる
標準C++関係の議論場所
• ISO C++ Standard – Discussion
– https://groups.google.com/a/isocpp.org/forum/#!forum/std-discussion
• ISO C++ Standard - Future Proposals
– https://groups.google.com/a/isocpp.org/forum/#!forum/std-proposals
• SG5 - Transactional Memory
– https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/tm
• SG8 – Concepts
– https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/concepts
• SG9 – Ranges
– http://www.open-std.org/mailman/listinfo/ranges
• SG10 - Feature test macros
– http://www.open-std.org/mailman/listinfo/features
Standard C++ Foundation
• 標準C++の情報を発信し、開発者コミュニティをサ
ポートしていくための、非営利団体(NPO)
• http://isocpp.org/
• C++に関する最新の情報は、ここで入手できる。
• イベント、開発ツール、ライブラリ、記事や書籍の情
報など。
ここから始めよう!
• isocpp.orgのRSSを購読しよう!
– 最新C++のまとめ情報が手に入ります
• std-proposalsのメーリングリストに参加しよう!
– 誰でも気軽に「こんな機能があったらいいよね」というと
ころから新機能の展望を話し合えます
– 日本人もけっこういます
• 英語ってむずかしい!
– お手伝いしますので、お気軽にご相談ください。
– それでがんばって英語で投稿して、実際に取り
入れられたこともあります
まとめ
• C++14はC++11のマイナーアップデートだが、意外と
便利な機能がたくさん入る
• ここで話した内容は、C++14が正式に決まるまでに
機能追加・削除、変更される可能性がある
• C++14の次に、C++1y(17?)も予定されている
• 最近のC++は、誰でも議論に参加できる
• 英語むずかしいけど、がんばったらそれなりの成果
は期待できます。一緒にがんばろう!
この資料の情報元
• Trip Report: ISO C++ Spring 2013 Meeting
– http://isocpp.org/blog/2013/04/trip-report-iso-c-spring-2013-meeting
• New paper: Bristol minutes—Kyle Kloepper
– http://isocpp.org/blog/2013/05/new-paper-bristol-minutes-kyle-
kloepper
• New paper: N3690, Programming Languages—C++,
Committee Draft
– http://isocpp.org/blog/2013/05/new-paper-n3690-programming-
languages-c-committee-draft
– C++14仕様のベータ版みたいなもの。
• New paper: N3692, C++ Editor’s Report, May 2013—Stefanus
Du Toit
– http://isocpp.org/blog/2013/05/new-paper-n3692-c-editors-report-
may-2013-stefanus-du-toit
– 変更点リスト

More Related Content

What's hot

ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみたfirewood
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesShintarou Okada
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
C++入門?
C++入門?C++入門?
C++入門?tsudaa
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Keisuke Fukuda
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 

What's hot (20)

Emcjp item21
Emcjp item21Emcjp item21
Emcjp item21
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみた
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
Map
MapMap
Map
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
C++入門?
C++入門?C++入門?
C++入門?
 
Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 

Viewers also liked

Boostのあるプログラミング生活
Boostのあるプログラミング生活Boostのあるプログラミング生活
Boostのあるプログラミング生活Akira Takahashi
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)Yuki Tamura
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用までyoshihikoozaki5
 

Viewers also liked (6)

Boostのあるプログラミング生活
Boostのあるプログラミング生活Boostのあるプログラミング生活
Boostのあるプログラミング生活
 
C++ Presentation
C++ PresentationC++ Presentation
C++ Presentation
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
 

Similar to C++14 Overview

言語処理系入門€10
言語処理系入門€10言語処理系入門€10
言語処理系入門€10Kenta Hattori
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 
Apache Camel Netty component
Apache Camel Netty componentApache Camel Netty component
Apache Camel Netty componentssogabe
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
C++ lecture-0
C++ lecture-0C++ lecture-0
C++ lecture-0sunaemon
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#信之 岩永
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティングTakeshi Takaishi
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編道化師 堂華
 
Lambda in template_final
Lambda in template_finalLambda in template_final
Lambda in template_finalCryolite
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)Akira Takahashi
 

Similar to C++14 Overview (20)

Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
言語処理系入門€10
言語処理系入門€10言語処理系入門€10
言語処理系入門€10
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
Apache Camel Netty component
Apache Camel Netty componentApache Camel Netty component
Apache Camel Netty component
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
Boost Tour 1.50.0 All
Boost Tour 1.50.0 AllBoost Tour 1.50.0 All
Boost Tour 1.50.0 All
 
C++0x総復習
C++0x総復習C++0x総復習
C++0x総復習
 
C++ lecture-0
C++ lecture-0C++ lecture-0
C++ lecture-0
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
 
Lambda in template_final
Lambda in template_finalLambda in template_final
Lambda in template_final
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
 

More from Akira Takahashi (20)

Cpp20 overview language features
Cpp20 overview language featuresCpp20 overview language features
Cpp20 overview language features
 
Cppmix 02
Cppmix 02Cppmix 02
Cppmix 02
 
Cppmix 01
Cppmix 01Cppmix 01
Cppmix 01
 
Modern C++ Learning
Modern C++ LearningModern C++ Learning
Modern C++ Learning
 
cpprefjp documentation
cpprefjp documentationcpprefjp documentation
cpprefjp documentation
 
C++1z draft
C++1z draftC++1z draft
C++1z draft
 
Boost tour 1_61_0 merge
Boost tour 1_61_0 mergeBoost tour 1_61_0 merge
Boost tour 1_61_0 merge
 
Boost tour 1_61_0
Boost tour 1_61_0Boost tour 1_61_0
Boost tour 1_61_0
 
error handling using expected
error handling using expectederror handling using expected
error handling using expected
 
Boost tour 1.60.0
Boost tour 1.60.0Boost tour 1.60.0
Boost tour 1.60.0
 
Boost container feature
Boost container featureBoost container feature
Boost container feature
 
Boost Tour 1_58_0
Boost Tour 1_58_0Boost Tour 1_58_0
Boost Tour 1_58_0
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
 
C++14 enum hash
C++14 enum hashC++14 enum hash
C++14 enum hash
 
Multi paradigm design
Multi paradigm designMulti paradigm design
Multi paradigm design
 
Start Concurrent
Start ConcurrentStart Concurrent
Start Concurrent
 
Programmer mind
Programmer mindProgrammer mind
Programmer mind
 
Boost.Study 14 Opening
Boost.Study 14 OpeningBoost.Study 14 Opening
Boost.Study 14 Opening
 
Executors and schedulers
Executors and schedulersExecutors and schedulers
Executors and schedulers
 
Improvement future api
Improvement future apiImprovement future api
Improvement future api
 

C++14 Overview