SlideShare a Scribd company logo
1 of 8
Download to read offline
型安全printf
LTDD 2
2014/04/05
@minamiyama1994
自己紹介
● 省略
● 口頭で
概要
● 「型安全printf」に関して
実装方法
● sprout::basic_stringを用いてコンパイル時定数
としてformat文字列を取得します
● SPROUT_TYPES_STRING_TYPEDEFを
使ってformat文字列を型に変換します
● variadic templateを用いて得られた可変長引
数と突き合わせます
● 以上
例
● TSP_PRINTF("%% %c %s %d %f Hello!
TSP!n",'e',"piyo",1,0.25)
○ “%% e piyo 1 0.25 Hello! TSP!”
● TSP_PRINTF("%fn”,"hoge")
○ コンパイルエラー
ポイント
● sprout::basic_stringを使う
○ →コンパイル時に文字列操作を行える
● 文字列を型に変換する
● 可変長引数と付き合わせる
● 現在char,int,double,char[N]に対応しています
● 将来的にはユーザ定義型に対して自由に拡張
できるように……とか
● リポジトリはType-safe-printfです
現状、そしてこれから
時間があれば質疑応答に入ります
ご清聴
ありがとうございました

More Related Content

What's hot

Ruby紹介(pdf)
Ruby紹介(pdf)Ruby紹介(pdf)
Ruby紹介(pdf)
Gohryuh
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
 
C++ Template Metaprogramming
C++ Template MetaprogrammingC++ Template Metaprogramming
C++ Template Metaprogramming
Akira Takahashi
 
2011年10月28日
2011年10月28日2011年10月28日
2011年10月28日
nukaemon
 
MT5の日本語化ハマりポイントの解説
MT5の日本語化ハマりポイントの解説MT5の日本語化ハマりポイントの解説
MT5の日本語化ハマりポイントの解説
Shinya Kobayashi
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
yoshihikoozaki5
 

What's hot (20)

C言語講習会3
C言語講習会3C言語講習会3
C言語講習会3
 
Emcpp0506
Emcpp0506Emcpp0506
Emcpp0506
 
Ruby紹介(pdf)
Ruby紹介(pdf)Ruby紹介(pdf)
Ruby紹介(pdf)
 
C言語講習会4
C言語講習会4C言語講習会4
C言語講習会4
 
#7:演算子と分岐
#7:演算子と分岐#7:演算子と分岐
#7:演算子と分岐
 
言語処理系入門€7
言語処理系入門€7言語処理系入門€7
言語処理系入門€7
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
 
C++ Template Metaprogramming
C++ Template MetaprogrammingC++ Template Metaprogramming
C++ Template Metaprogramming
 
20081120 lt11th ace
20081120 lt11th ace20081120 lt11th ace
20081120 lt11th ace
 
2011年10月28日
2011年10月28日2011年10月28日
2011年10月28日
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論
 
MT5の日本語化ハマりポイントの解説
MT5の日本語化ハマりポイントの解説MT5の日本語化ハマりポイントの解説
MT5の日本語化ハマりポイントの解説
 
続・わかりやすいパターン認識 第7章「マルコフモデル」
続・わかりやすいパターン認識 第7章「マルコフモデル」続・わかりやすいパターン認識 第7章「マルコフモデル」
続・わかりやすいパターン認識 第7章「マルコフモデル」
 
Java オブジェクトの内部構造
Java オブジェクトの内部構造Java オブジェクトの内部構造
Java オブジェクトの内部構造
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
 
9_C言語入門 - 条件分岐について(switch case)
9_C言語入門 - 条件分岐について(switch case)9_C言語入門 - 条件分岐について(switch case)
9_C言語入門 - 条件分岐について(switch case)
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
第1回Java講義資料
第1回Java講義資料第1回Java講義資料
第1回Java講義資料
 

Viewers also liked (8)

περιβάλλον
περιβάλλονπεριβάλλον
περιβάλλον
 
Przyjaciel.partner.mecenas
Przyjaciel.partner.mecenasPrzyjaciel.partner.mecenas
Przyjaciel.partner.mecenas
 
Social Media Resources for Financial Education 04-14
Social Media Resources for Financial Education 04-14Social Media Resources for Financial Education 04-14
Social Media Resources for Financial Education 04-14
 
I1037175
I1037175I1037175
I1037175
 
Diversity Seek -- Crop diversity for food security
Diversity Seek -- Crop diversity for food securityDiversity Seek -- Crop diversity for food security
Diversity Seek -- Crop diversity for food security
 
D1032532
D1032532D1032532
D1032532
 
COOLMAX_S_CH
COOLMAX_S_CHCOOLMAX_S_CH
COOLMAX_S_CH
 
RETI di LABORATORI - [Agroalimentare] AFF
RETI di LABORATORI - [Agroalimentare] AFFRETI di LABORATORI - [Agroalimentare] AFF
RETI di LABORATORI - [Agroalimentare] AFF
 

More from 真一 北原

能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた
真一 北原
 

More from 真一 北原 (12)

Database.persistentの話
Database.persistentの話Database.persistentの話
Database.persistentの話
 
能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発
 
型! 型!
型! 型!型! 型!
型! 型!
 
型!
型!型!
型!
 
templateを依存型っぽく使ってみる
templateを依存型っぽく使ってみるtemplateを依存型っぽく使ってみる
templateを依存型っぽく使ってみる
 
すごいMonad入門
すごいMonad入門すごいMonad入門
すごいMonad入門
 
すごいCoq入門
すごいCoq入門すごいCoq入門
すごいCoq入門
 
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみたLt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた
 
Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果
 
能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた
 
第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料