Submit Search
Upload
Episteme variadic template
•
Download as PPTX, PDF
•
1 like
•
990 views
えぴ 福田
Follow
- 2013.11.02 C++例外安全Day@大阪 - 2013.11.09 わんくま同盟東京勉強会#85 - 2013.11.14 歌舞伎座.tech #2
Read less
Read more
Technology
Education
Report
Share
Report
Share
1 of 13
Download now
Recommended
型安全Printf作ってみた
型安全Printf作ってみた
真一 北原
C++ Template Metaprogramming
C++ Template Metaprogramming
Akira Takahashi
PHPのタイプヒンティングについてざっと調べた内容を、社内勉強会向けにまとめました。
PHPのタイプヒンティング
PHPのタイプヒンティング
Hidetaka Okamoto
C#coding guideline その2_20130325
C#coding guideline その2_20130325
Yoshihisa Ozaki
Lambda in template_final
Lambda in template_final
Cryolite
C言語よくある誤り
C言語よくある誤り
長岡技術科学大学 自然言語処理研究室
2013-11-21 .NETラボ勉強会@品川 LT枠にて Visual C++ Compiler November 2013 CTP: Torino の新機能を"ひとつだけ"紹介。
.NETラボ 2013-12-21 LT
.NETラボ 2013-12-21 LT
えぴ 福田
T77 episteme
T77 episteme
えぴ 福田
Recommended
型安全Printf作ってみた
型安全Printf作ってみた
真一 北原
C++ Template Metaprogramming
C++ Template Metaprogramming
Akira Takahashi
PHPのタイプヒンティングについてざっと調べた内容を、社内勉強会向けにまとめました。
PHPのタイプヒンティング
PHPのタイプヒンティング
Hidetaka Okamoto
C#coding guideline その2_20130325
C#coding guideline その2_20130325
Yoshihisa Ozaki
Lambda in template_final
Lambda in template_final
Cryolite
C言語よくある誤り
C言語よくある誤り
長岡技術科学大学 自然言語処理研究室
2013-11-21 .NETラボ勉強会@品川 LT枠にて Visual C++ Compiler November 2013 CTP: Torino の新機能を"ひとつだけ"紹介。
.NETラボ 2013-12-21 LT
.NETラボ 2013-12-21 LT
えぴ 福田
T77 episteme
T77 episteme
えぴ 福田
T69 episteme
T69 episteme
えぴ 福田
T45 episteme
T45 episteme
えぴ 福田
- 2013.11.02 C++例外安全Day@大阪 - 2013.11.09 わんくま同盟東京勉強会#85 - 2013.11.14 歌舞伎座.tech #2
Episteme unique_ptr
Episteme unique_ptr
えぴ 福田
ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
Yokohama6 epi
Yokohama6 epi
えぴ 福田
Developer Summit 2016 : ID: 19-E-3 https://event.shoeisha.jp/devsumi/20160218/session/1055/
20160219 devsumi cookpad matsuo
20160219 devsumi cookpad matsuo
Kazuaki Matsuo
Effective Modern C++勉強会資料 https://github.com/herumi/emcjp
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Preferred Networks
What is template
What is template
Akira Takahashi
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
プログラミングのリファクタリング初歩に関する話題です。
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
無料で入手できるビジュアル開発ツール「Delphi Starter Edition / C++ Builder Starter Edition」 を使って 、楽しくプログラミングを学びましょう。毎週月曜17時より、オンライン放送。1シーズン約3ヶ月ごとに、テーマを分けて学んでいきます。視覚的かつ直感的に開発を進めることのできるDelphi / C++Builderを用いれば、プログラミング知識のない方も、よりかんたんにプログラミング技術とアプリ開発のスキルを身に着けることができます。 シーズン2 C++Builderの部 第3回 ‟条件とループ„ セミナー資料
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第4回 ‟関数„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第4回 ‟関数„
和弘 井之上
プログラマ講習第2回
プログラマ講習第2回
Yuma Yoshimoto
身内向けですがせっかく作ったので。 土日に深夜のテンションで作ったので抜け漏れ誤字脱字だらけだと思います…
Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
プログラマ講習第3回
プログラマ講習第3回
Yuma Yoshimoto
Effective Modern C++ item21
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
C言語の入門スライドを作りました。細かい説明は抜きにしてざっくり解説します。
やさしく知りたいC言語
やさしく知りたいC言語
uru nru
Using Apache Spark Machine Learning by advertising.
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
x1 ichi
主に cppll ML でご紹介してきた tips をC++の仕様をより掘り下げた形でまとめ直してみました。 今回はカンマ演算子にフォーカスした内容です。
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
秀スクリプトの話 2017年11月の#ssmjp http://bit.ly/2AesqgD
秀スクリプトの話
秀スクリプトの話
Hiroshi Tokumaru
C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
OS Xのセキュリティ脆弱性研究はMacのデバイスが人気になるにつれ、より人気が高まっている。OX XのIOKitはユーザモードからの切り替えにおけるカーネル自身およびカーネル拡張の危殆化によりハッカーからの多くの攻撃にさらされている。多くの研究者はこの分野の研究(リファレンスを参照のこと)を進めており、我々は本研究分野の次のいくつかの成果を共有したい。 1. カーネル脆弱性を検出するためのコンテキストエンライトメントによるパッシブファジングフレームワーク 2. SMAP&SMEPをバイパスするためのユーザモードプログラムからカーネルメモリを占有するためのエクスプロイト技術 3. 本ファジング手法により検出された脆弱性の活用方法とOS Xに対し二度の成功をもたらしたルート詐取のための新たなエクスプロイト手法 我々は次の新たな手法を紹介する。PFACEと呼ばれる、OS X IO Kitに対するコンテキストエンライトメントによるパッシブファジングである。PFACEは次のような特徴を有する。 第一に、条件依存でありシステムクラッシュをもたらすコードの実行および検出を深くまた広く許可する。次に以下が含まれるモジュールを出力する。コンテキスト:脆弱性の疑いに対するインジケーター。インジケーターは最初にモジュールをレビューするための手段としてレビュアーにとって有用であろう。 多くの脆弱性を有する場合、主要な課題はどのようにROPガジェットをユーザモードプログラムからカーネル空間に転送するかである。なぜなら近年のOS XではSMAPおよびSMEPを許可しているためである。高名なセキュリティ研究者であるステファン・エッサーはOSDataはカーネルメモリを占拠する良い構造であると提案している。[リファレンスセクション5]もちろんOSDataは確かによいデータ構造である。しかし、実際にはOSDataが機能しないいくつかの課題が存在する。我々はOSDATAがユーザモードプログラムからカーネルメモリを占拠するよう機能させるための新たな手法を発見し、本手法により、新たな脆弱性の検出およびOS X (10.11.3) のルート詐取に成功している。 実際に我々はCVEにおける多くの脆弱性を発見しており、ファジング効果によるカーネルクラッシュを実現している。また、我々はMac OS X(10.11.3)においていくつかの脆弱性を使って、二つの異なるローカル権限昇格手法を確立している。 --- Moony Li & Jack Tang
[CB16] (P)FACE :アップルのコアへ、そしてルート権限へのエクスプロイト by Moony Li & Jack Tang
[CB16] (P)FACE :アップルのコアへ、そしてルート権限へのエクスプロイト by Moony Li & Jack Tang
CODE BLUE
More Related Content
Viewers also liked
T69 episteme
T69 episteme
えぴ 福田
T45 episteme
T45 episteme
えぴ 福田
- 2013.11.02 C++例外安全Day@大阪 - 2013.11.09 わんくま同盟東京勉強会#85 - 2013.11.14 歌舞伎座.tech #2
Episteme unique_ptr
Episteme unique_ptr
えぴ 福田
ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
Yokohama6 epi
Yokohama6 epi
えぴ 福田
Developer Summit 2016 : ID: 19-E-3 https://event.shoeisha.jp/devsumi/20160218/session/1055/
20160219 devsumi cookpad matsuo
20160219 devsumi cookpad matsuo
Kazuaki Matsuo
Viewers also liked
(6)
T69 episteme
T69 episteme
T45 episteme
T45 episteme
Episteme unique_ptr
Episteme unique_ptr
ぱっと見でわかるC++11
ぱっと見でわかるC++11
Yokohama6 epi
Yokohama6 epi
20160219 devsumi cookpad matsuo
20160219 devsumi cookpad matsuo
Similar to Episteme variadic template
Effective Modern C++勉強会資料 https://github.com/herumi/emcjp
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Preferred Networks
What is template
What is template
Akira Takahashi
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
プログラミングのリファクタリング初歩に関する話題です。
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
無料で入手できるビジュアル開発ツール「Delphi Starter Edition / C++ Builder Starter Edition」 を使って 、楽しくプログラミングを学びましょう。毎週月曜17時より、オンライン放送。1シーズン約3ヶ月ごとに、テーマを分けて学んでいきます。視覚的かつ直感的に開発を進めることのできるDelphi / C++Builderを用いれば、プログラミング知識のない方も、よりかんたんにプログラミング技術とアプリ開発のスキルを身に着けることができます。 シーズン2 C++Builderの部 第3回 ‟条件とループ„ セミナー資料
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第4回 ‟関数„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第4回 ‟関数„
和弘 井之上
プログラマ講習第2回
プログラマ講習第2回
Yuma Yoshimoto
身内向けですがせっかく作ったので。 土日に深夜のテンションで作ったので抜け漏れ誤字脱字だらけだと思います…
Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
プログラマ講習第3回
プログラマ講習第3回
Yuma Yoshimoto
Effective Modern C++ item21
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
C言語の入門スライドを作りました。細かい説明は抜きにしてざっくり解説します。
やさしく知りたいC言語
やさしく知りたいC言語
uru nru
Using Apache Spark Machine Learning by advertising.
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
x1 ichi
主に cppll ML でご紹介してきた tips をC++の仕様をより掘り下げた形でまとめ直してみました。 今回はカンマ演算子にフォーカスした内容です。
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
秀スクリプトの話 2017年11月の#ssmjp http://bit.ly/2AesqgD
秀スクリプトの話
秀スクリプトの話
Hiroshi Tokumaru
C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
OS Xのセキュリティ脆弱性研究はMacのデバイスが人気になるにつれ、より人気が高まっている。OX XのIOKitはユーザモードからの切り替えにおけるカーネル自身およびカーネル拡張の危殆化によりハッカーからの多くの攻撃にさらされている。多くの研究者はこの分野の研究(リファレンスを参照のこと)を進めており、我々は本研究分野の次のいくつかの成果を共有したい。 1. カーネル脆弱性を検出するためのコンテキストエンライトメントによるパッシブファジングフレームワーク 2. SMAP&SMEPをバイパスするためのユーザモードプログラムからカーネルメモリを占有するためのエクスプロイト技術 3. 本ファジング手法により検出された脆弱性の活用方法とOS Xに対し二度の成功をもたらしたルート詐取のための新たなエクスプロイト手法 我々は次の新たな手法を紹介する。PFACEと呼ばれる、OS X IO Kitに対するコンテキストエンライトメントによるパッシブファジングである。PFACEは次のような特徴を有する。 第一に、条件依存でありシステムクラッシュをもたらすコードの実行および検出を深くまた広く許可する。次に以下が含まれるモジュールを出力する。コンテキスト:脆弱性の疑いに対するインジケーター。インジケーターは最初にモジュールをレビューするための手段としてレビュアーにとって有用であろう。 多くの脆弱性を有する場合、主要な課題はどのようにROPガジェットをユーザモードプログラムからカーネル空間に転送するかである。なぜなら近年のOS XではSMAPおよびSMEPを許可しているためである。高名なセキュリティ研究者であるステファン・エッサーはOSDataはカーネルメモリを占拠する良い構造であると提案している。[リファレンスセクション5]もちろんOSDataは確かによいデータ構造である。しかし、実際にはOSDataが機能しないいくつかの課題が存在する。我々はOSDATAがユーザモードプログラムからカーネルメモリを占拠するよう機能させるための新たな手法を発見し、本手法により、新たな脆弱性の検出およびOS X (10.11.3) のルート詐取に成功している。 実際に我々はCVEにおける多くの脆弱性を発見しており、ファジング効果によるカーネルクラッシュを実現している。また、我々はMac OS X(10.11.3)においていくつかの脆弱性を使って、二つの異なるローカル権限昇格手法を確立している。 --- Moony Li & Jack Tang
[CB16] (P)FACE :アップルのコアへ、そしてルート権限へのエクスプロイト by Moony Li & Jack Tang
[CB16] (P)FACE :アップルのコアへ、そしてルート権限へのエクスプロイト by Moony Li & Jack Tang
CODE BLUE
総合情報センター講座 - C入門 初心者向けに、5日間コースで開講した時の資料です。
講座C入門
講座C入門
Tokai University
OSC 2020 Online /Kyoto セミナー企画 Flutterの話題とコミュニティ紹介 セッションスライドです。 https://event.ospn.jp/osc2020-online-kyoto/session/161439
Flutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
知って得するC#
知って得するC#
Shota Baba
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
Similar to Episteme variadic template
(20)
templateとautoの型推論
templateとautoの型推論
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
What is template
What is template
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第4回 ‟関数„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第4回 ‟関数„
プログラマ講習第2回
プログラマ講習第2回
Visual C++で使えるC++11
Visual C++で使えるC++11
プログラマ講習第3回
プログラマ講習第3回
Emcjp item21
Emcjp item21
やさしく知りたいC言語
やさしく知りたいC言語
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
秀スクリプトの話
秀スクリプトの話
C++11概要 ライブラリ編
C++11概要 ライブラリ編
[CB16] (P)FACE :アップルのコアへ、そしてルート権限へのエクスプロイト by Moony Li & Jack Tang
[CB16] (P)FACE :アップルのコアへ、そしてルート権限へのエクスプロイト by Moony Li & Jack Tang
講座C入門
講座C入門
Flutterを体験してみませんか
Flutterを体験してみませんか
知って得するC#
知って得するC#
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
Recently uploaded
2024/05/25 serverless Meetup osaka
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
Security-JAWS【第33回】 勉強会 https://s-jaws.doorkeeper.jp/events/173294
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
keikoitakurag
サイバーエージェントAI事業部の新卒研修で利用したスライドを公開します。
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
YouTube nnabla channelの次の動画で利用したスライドです。 【AI論文解説】Consistency ModelとRectified Flow https://youtu.be/3IKCrAPe55k Consistency ModelとRectified Flowに関連する以下の論文を紹介しています。 Consistency models(解説編Part1で紹介) - “Consistency Models,” ICML 2023. - “Improved Techniques for Training Consistency Models,” ICLR 2024. - “Consistency Trajectory Models: Learning Probability Flow ODE Trajectory of Diffusion,” ICLR 2024. Rectified flow(解説編Part2で紹介) - “Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow,” ICLR 2023. - “InstaFlow: One Step is Enough for High-Quality Diffusion-Based Text-to-Image Generation,” ICLR 2024.
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
This presentation introduces a paper about offline reinforcement learning.
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
https://iotlt.connpass.com/event/318403/
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
Ayachika Kitazaki
This presentation introduces a paper about offline reinforcement learning.
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料) 2024年4月24日(水) 株式会社NTTデータグループ 技術開発本部 笠原 辰仁
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(10)
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
Episteme variadic template
1.
わんくま同盟茶藝部顧問 episthmh episteme@cppll.jp Microsoft MVP for
Visual C++ (2004~)
2.
variadic function お馴染み printf(const
char* format, ...) printf(“I‟m %s, %d years old.”, “Adam”, 20); variadic macro #define FL_printf(format,...) printf(“%s(%d) “ format, __FILE__, __LINE__, __VA_ARGS__) FL_printf(“I‟m %s, %d years old.”, “Adam”, 20); …そして variadic template
3.
Template parameter pack 0個以上の型の並び template<class
...Ts> struct Tuple {}; Tuple<> t0; Tuple<int> t1; Tuple<int,float> t2; Tuple<0> error; // Tsは 空 // intひとつの並び // intとfloatの並び // エラー:0は型ではない
4.
Function parameter pack 0個以上の値の並び template<class
...Ts> void f(Ts ...vs); f(); f(1); f(2, 1.0); // vs は空 // vs はintひとつの並び // vs はintとdoubleの並び
5.
typedef Ts MyList;
// error! Ts var; // error! auto copy = vs; // error!
6.
sizeof... size_t items =
sizeof...(Ts); size_t items = sizeof...(vs); packの展開 template<typename ...Ts> void f(Ts&& ...vs) { g(3.14, std::forward<Ts>(vs)...); }
7.
書式 展開 Ts... Ts&&... X<Ts,Y>::z... X<Ts,Us>... F(5, vs)... T1, …
, Tn T1&&, … , Tn&& X<T1,Y>::z, … , X<Tn,Y>::z X<T1,U1>, … , X<Tn,Un> F(5,v1), … , f(5,vn)
8.
template<typename ...Ts> void f(Ts
...vs) { g(A<Ts...>::h(vs)...); g(A<Ts...>::h(vs...)); g(A<Ts>::h(vs)...); }
9.
f(12, „3‟); すると… void
f(int v1, char v2) { // g(A<Ts...>::h(vs)...); g(A<int,char>::h(v1), A<int,char>::h(v2)); // g(A<Ts...>::h(vs...)); g(A<int,char>::h(v1,v2)); // g(A<Ts>::h(vs)...); g(A<int>::h(v1), A<char>::h(v2)); }
10.
キモは「パターン・マッチング」 template<class T1, class
T2> bool isOneOf(T1&& a, T2&& b) { return a == b; } template<class T1, class T2, class ...Ts> bool isOneOf(T1&& a, T2&& b, Ts&& ...vs) { return a == b || isOneOf(a, vs...); } assert( isOneOf(1, 2, 3.5, 4, 1, 2) );
11.
キモはやっぱり「パターン・マッチング」 // tuple<T0,T1,T2...> : //
tuple<char,int,const char*> t; get<0>(t) = „A‟; get<1>(t) = 12; … template<int N, typename ...Ts> struct tuple_data; template<int N> struct tuple_data<N> {}; template<int N, typename Thead, typename ...Tbody> struct tuple_data<N, Thead, Tbody...> : public tuple_data<N + 1, Tbody...> { Thead value; }; template<typename ...Ts> struct tuple : public tuple_data<0, Ts...> {};
12.
13.
キモは「パターン・マッチング」 template<int N, typename
Thead, typename ...Tbody> Thead& get_tuple_data(tuple_data<N, Thead, Tbody...>& t) { return t.value; } template<int N, typename ...Ts> auto get(tuple<Ts...>& t) -> decltype(get_tuple_data<N>(t)) { return get_tuple_data<N>(t); } /* おためし */ int main() { tuple<char,int,const char*> t; get<0>(t) = 'T'; get<1>(t) = 4; get<2>(t) = "two"; }
Download now