SlideShare ist ein Scribd-Unternehmen logo
1 von 24
はじまるよ

#nseg でつぶやいてみてね
被災してきました
結局、4日間
http://twitter.com/earth2001y/status/47301503299497984
宣伝
EM高専カンファレンス


       オンライン版公開しています
http://www.manaslink.com/em/emzero/em-kc/
みなさん、高専にどんなイメージ持ってますか?
みなさん、高専にどんなイメージ持ってますか?




http://www.nagano-nct.ac.jp/science/index.php
本題
C++の黒魔術
 Daichi OBINATA

  NSEG #13
 Mar 19, 2011
C++の黒魔術 =
テンプレートメタプログラミング
テンプレートとは?
プログラミングにおけるテンプレートは、静的型付
けのC++でデータ型にとらわれずにコードを書くこ
とを可能にする機能であり、C++においてはジェネ
リックプログラミングに用いられる。
C++においてテンプレートは多重継承や演算子多重
定義と並ぶ重要な機能となった。STL (Standard
Template Library)はテンプレートによって構築
されたフレームワークとなっている。
http://ja.wikipedia.org/wiki/テンプレート_(プログラミング)
template <typename T>
T max(T x, T y)
{
  if (x < y)
     return y;
  else
     return x;
}


cout << max(3, 7); //7が出力される
詳しくはggrks
テンプレートは
・コンパイル時に処理されます
・チューリング完全です
・関数型言語です
テンプレートは
・コンパイル時に処理されます
・チューリング完全です
・関数型言語です


   詳しくはggrks
テンプレートは
・コンパイル時に処理されます
・チューリング完全です
・関数型言語です
「チューリング機械の停止判定問題」
  がコンパイル時にも発生する
コンパイルが停止しない(終了
しない)プログラムが書ける!
デモ
まとめ

・C++でコンパイルが止まらな
 いプログラムを書きました。
まとめ

・C++でコンパイルが止まらな
 いプログラムを書きました。
・仕事では使えません!
参考文献
・Todd L. Veldhuizen:
  C++ Templates are Turing Complete


・おびなただいち: C++テンプレートでLisp


・大日向大地: C++テンプレートでカレンダー ,
 情報処理学会 2007年夏プロシン


・おびなただいち: C++テンプレートでFizzBuzz ,
 日本野望の会 2008年新年会
http://d.hatena.ne.jp/earth2001y/
おわり

Weitere ähnliche Inhalte

Was ist angesagt?

constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
 

Was ist angesagt? (20)

プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 

Andere mochten auch (7)

C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
Boostのあるプログラミング生活
Boostのあるプログラミング生活Boostのあるプログラミング生活
Boostのあるプログラミング生活
 
C++ Presentation
C++ PresentationC++ Presentation
C++ Presentation
 
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミングエクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 

Ähnlich wie C++の黒魔術

Define and expansion of cpp macro
Define and expansion of cpp macroDefine and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
 

Ähnlich wie C++の黒魔術 (20)

Define and expansion of cpp macro
Define and expansion of cpp macroDefine and expansion of cpp macro
Define and expansion of cpp macro
 
絵文字で構成されプログラミング言語のつくりはじめ とコードシーリング 0817.pdf
絵文字で構成されプログラミング言語のつくりはじめ とコードシーリング 0817.pdf絵文字で構成されプログラミング言語のつくりはじめ とコードシーリング 0817.pdf
絵文字で構成されプログラミング言語のつくりはじめ とコードシーリング 0817.pdf
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
 
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
 
Bjarne dont speaking
Bjarne dont speakingBjarne dont speaking
Bjarne dont speaking
 
Janog31 bof-pattern-sasaki-01
Janog31 bof-pattern-sasaki-01Janog31 bof-pattern-sasaki-01
Janog31 bof-pattern-sasaki-01
 
NeurIPS2021読み会 Fairness in Ranking under Uncertainty
NeurIPS2021読み会 Fairness in Ranking under UncertaintyNeurIPS2021読み会 Fairness in Ranking under Uncertainty
NeurIPS2021読み会 Fairness in Ranking under Uncertainty
 
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
 
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnetC#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
 
実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics 実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics
 
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
 
Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成
 
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
 
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたMTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
 
Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
 
Caffeのデータレイヤで夢が広がる話
Caffeのデータレイヤで夢が広がる話Caffeのデータレイヤで夢が広がる話
Caffeのデータレイヤで夢が広がる話
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 

Mehr von Daichi OBINATA

NSEG 長野のIT勉強会
NSEG 長野のIT勉強会NSEG 長野のIT勉強会
NSEG 長野のIT勉強会
Daichi OBINATA
 
春ですね。お花見をしましょう(仮)
春ですね。お花見をしましょう(仮)春ですね。お花見をしましょう(仮)
春ですね。お花見をしましょう(仮)
Daichi OBINATA
 
「ふるさと自慢コンテスト」前説
「ふるさと自慢コンテスト」前説「ふるさと自慢コンテスト」前説
「ふるさと自慢コンテスト」前説
Daichi OBINATA
 
続・ビジュアル系高専生
続・ビジュアル系高専生続・ビジュアル系高専生
続・ビジュアル系高専生
Daichi OBINATA
 
20110115 カンファレンスカンファレンス
20110115 カンファレンスカンファレンス20110115 カンファレンスカンファレンス
20110115 カンファレンスカンファレンス
Daichi OBINATA
 
高専カンファレンス次回以降開催予告
高専カンファレンス次回以降開催予告高専カンファレンス次回以降開催予告
高専カンファレンス次回以降開催予告
Daichi OBINATA
 
俺とプロコン - プロコンナイト
俺とプロコン - プロコンナイト俺とプロコン - プロコンナイト
俺とプロコン - プロコンナイト
Daichi OBINATA
 
高専同窓会連絡会 高専カンファレンスの紹介
高専同窓会連絡会 高専カンファレンスの紹介高専同窓会連絡会 高専カンファレンスの紹介
高専同窓会連絡会 高専カンファレンスの紹介
Daichi OBINATA
 
並列計算とかHPCとか
並列計算とかHPCとか並列計算とかHPCとか
並列計算とかHPCとか
Daichi OBINATA
 
高専カンファレンス実行委員会 2010年発、未来へ
高専カンファレンス実行委員会 2010年発、未来へ高専カンファレンス実行委員会 2010年発、未来へ
高専カンファレンス実行委員会 2010年発、未来へ
Daichi OBINATA
 
高専カンファレンス次回開催予告
高専カンファレンス次回開催予告高専カンファレンス次回開催予告
高専カンファレンス次回開催予告
Daichi OBINATA
 

Mehr von Daichi OBINATA (20)

プロコンの競技OB戦をやってみた
プロコンの競技OB戦をやってみたプロコンの競技OB戦をやってみた
プロコンの競技OB戦をやってみた
 
NSEG 長野のIT勉強会
NSEG 長野のIT勉強会NSEG 長野のIT勉強会
NSEG 長野のIT勉強会
 
ISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
ISAC Tokyo 2014 宇宙の歩き方 Space Travel MapISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
ISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
 
高専カンファレンス5周年パーティー 歴代実行委員長大集合
高専カンファレンス5周年パーティー 歴代実行委員長大集合高専カンファレンス5周年パーティー 歴代実行委員長大集合
高専カンファレンス5周年パーティー 歴代実行委員長大集合
 
高専カンファレンス宣言
高専カンファレンス宣言高専カンファレンス宣言
高専カンファレンス宣言
 
第{0,3,9}層の制約と戦うネットワーク構築の話
第{0,3,9}層の制約と戦うネットワーク構築の話第{0,3,9}層の制約と戦うネットワーク構築の話
第{0,3,9}層の制約と戦うネットワーク構築の話
 
春ですね。お花見をしましょう(仮)
春ですね。お花見をしましょう(仮)春ですね。お花見をしましょう(仮)
春ですね。お花見をしましょう(仮)
 
「ふるさと自慢コンテスト」前説
「ふるさと自慢コンテスト」前説「ふるさと自慢コンテスト」前説
「ふるさと自慢コンテスト」前説
 
高専卒業10年アラサー男子が見る高専プロコン
高専卒業10年アラサー男子が見る高専プロコン高専卒業10年アラサー男子が見る高専プロコン
高専卒業10年アラサー男子が見る高専プロコン
 
ビジュアル系高専生(つくってみたコンテスト)
ビジュアル系高専生(つくってみたコンテスト)ビジュアル系高専生(つくってみたコンテスト)
ビジュアル系高専生(つくってみたコンテスト)
 
NSEG17 バグのはなし
NSEG17 バグのはなしNSEG17 バグのはなし
NSEG17 バグのはなし
 
Super Kamiokande 再建作業 学生ボランティア体験記
Super Kamiokande 再建作業 学生ボランティア体験記Super Kamiokande 再建作業 学生ボランティア体験記
Super Kamiokande 再建作業 学生ボランティア体験記
 
続・ビジュアル系高専生
続・ビジュアル系高専生続・ビジュアル系高専生
続・ビジュアル系高専生
 
20110115 カンファレンスカンファレンス
20110115 カンファレンスカンファレンス20110115 カンファレンスカンファレンス
20110115 カンファレンスカンファレンス
 
高専カンファレンス次回以降開催予告
高専カンファレンス次回以降開催予告高専カンファレンス次回以降開催予告
高専カンファレンス次回以降開催予告
 
俺とプロコン - プロコンナイト
俺とプロコン - プロコンナイト俺とプロコン - プロコンナイト
俺とプロコン - プロコンナイト
 
高専同窓会連絡会 高専カンファレンスの紹介
高専同窓会連絡会 高専カンファレンスの紹介高専同窓会連絡会 高専カンファレンスの紹介
高専同窓会連絡会 高専カンファレンスの紹介
 
並列計算とかHPCとか
並列計算とかHPCとか並列計算とかHPCとか
並列計算とかHPCとか
 
高専カンファレンス実行委員会 2010年発、未来へ
高専カンファレンス実行委員会 2010年発、未来へ高専カンファレンス実行委員会 2010年発、未来へ
高専カンファレンス実行委員会 2010年発、未来へ
 
高専カンファレンス次回開催予告
高専カンファレンス次回開催予告高専カンファレンス次回開催予告
高専カンファレンス次回開催予告
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

C++の黒魔術