Suche senden
Hochladen
Emcjp item33,34
•
1 gefällt mir
•
1,577 views
MITSUNARI Shigeo
Folgen
Effective Modern C++勉強会#7 https://github.com/herumi/emcjp/blob/master/readme.md
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 9
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
llvm入門
llvm入門
MITSUNARI Shigeo
Emcpp item31
Emcpp item31
mitsutaka_takeda
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
フラグを愛でる
フラグを愛でる
MITSUNARI Shigeo
Empfohlen
llvm入門
llvm入門
MITSUNARI Shigeo
Emcpp item31
Emcpp item31
mitsutaka_takeda
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
フラグを愛でる
フラグを愛でる
MITSUNARI Shigeo
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
Prosym2012
Prosym2012
MITSUNARI Shigeo
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
Map
Map
kikairoya
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
20180728 halide-study
20180728 halide-study
Fixstars Corporation
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
Boost.SIMD
Boost.SIMD
Akira Takahashi
Effective modern c++ 8
Effective modern c++ 8
uchan_nos
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Weitere ähnliche Inhalte
Was ist angesagt?
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
Prosym2012
Prosym2012
MITSUNARI Shigeo
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
Map
Map
kikairoya
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
20180728 halide-study
20180728 halide-study
Fixstars Corporation
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
Boost.SIMD
Boost.SIMD
Akira Takahashi
Was ist angesagt?
(20)
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
Prosym2012
Prosym2012
新しい並列for構文のご提案
新しい並列for構文のご提案
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Map
Map
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
20180728 halide-study
20180728 halide-study
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
並行プログラミングと継続モナド
並行プログラミングと継続モナド
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
emc++ chapter32
emc++ chapter32
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
emcjp Item 42
emcjp Item 42
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Cython intro prelerease
Cython intro prelerease
Boost.SIMD
Boost.SIMD
Andere mochten auch
Effective modern c++ 8
Effective modern c++ 8
uchan_nos
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Effective Modern C++勉強会#4 Item 17, 18資料
Effective Modern C++勉強会#4 Item 17, 18資料
Ryo Igarashi
Effective modern c++ 5
Effective modern c++ 5
uchan_nos
Emcpp0506
Emcpp0506
Takatoshi Kondo
Emcpp item41
Emcpp item41
mitsutaka_takeda
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
Andere mochten auch
(7)
Effective modern c++ 8
Effective modern c++ 8
templateとautoの型推論
templateとautoの型推論
Effective Modern C++勉強会#4 Item 17, 18資料
Effective Modern C++勉強会#4 Item 17, 18資料
Effective modern c++ 5
Effective modern c++ 5
Emcpp0506
Emcpp0506
Emcpp item41
Emcpp item41
effective modern c++ chapeter36
effective modern c++ chapeter36
Ähnlich wie Emcjp item33,34
Haskell
Haskell
todorokit
Clean
Clean
osamu kimura
Clean
Clean
osamu kimura
Lambda in template_final
Lambda in template_final
Cryolite
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Preferred Networks
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Masahiro Sakai
モナドをつくろう
モナドをつくろう
dico_leque
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
Masahiro Suzuki
SICP
SICP
S W
Java8から始める関数型プログラミング
Java8から始める関数型プログラミング
stylefreeslide
D言語会議#1
D言語会議#1
9rnsr
Material
Material
_TUNE_
C++ lecture-0
C++ lecture-0
sunaemon
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
Sized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアル
Akinori Abe
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
Ähnlich wie Emcjp item33,34
(16)
Haskell
Haskell
Clean
Clean
Clean
Clean
Lambda in template_final
Lambda in template_final
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
モナドをつくろう
モナドをつくろう
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
SICP
SICP
Java8から始める関数型プログラミング
Java8から始める関数型プログラミング
D言語会議#1
D言語会議#1
Material
Material
C++ lecture-0
C++ lecture-0
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
Sized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアル
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
Mehr von MITSUNARI Shigeo
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo
暗認本読書会13 advanced
暗認本読書会13 advanced
MITSUNARI Shigeo
暗認本読書会12
暗認本読書会12
MITSUNARI Shigeo
暗認本読書会11
暗認本読書会11
MITSUNARI Shigeo
暗認本読書会10
暗認本読書会10
MITSUNARI Shigeo
暗認本読書会9
暗認本読書会9
MITSUNARI Shigeo
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
暗認本読書会8
暗認本読書会8
MITSUNARI Shigeo
暗認本読書会7
暗認本読書会7
MITSUNARI Shigeo
暗認本読書会6
暗認本読書会6
MITSUNARI Shigeo
暗認本読書会5
暗認本読書会5
MITSUNARI Shigeo
暗認本読書会4
暗認本読書会4
MITSUNARI Shigeo
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
楕円曲線と暗号
楕円曲線と暗号
MITSUNARI Shigeo
HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
Mehr von MITSUNARI Shigeo
(20)
暗号技術の実装と数学
暗号技術の実装と数学
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
暗認本読書会13 advanced
暗認本読書会13 advanced
暗認本読書会12
暗認本読書会12
暗認本読書会11
暗認本読書会11
暗認本読書会10
暗認本読書会10
暗認本読書会9
暗認本読書会9
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
暗認本読書会8
暗認本読書会8
暗認本読書会7
暗認本読書会7
暗認本読書会6
暗認本読書会6
暗認本読書会5
暗認本読書会5
暗認本読書会4
暗認本読書会4
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
私とOSSの25年
私とOSSの25年
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
楕円曲線と暗号
楕円曲線と暗号
HPC Phys-20201203
HPC Phys-20201203
BLS署名の実装とその応用
BLS署名の実装とその応用
Kürzlich hochgeladen
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Kürzlich hochgeladen
(8)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Emcjp item33,34
1.
Item 33: lambda内のstd::forwardにはdecltype Item
34: std::bindよりlambda emcjp#7 2015/7/14 光成滋生
2.
lambdaにautoを使える この関数は次のようなものだった(Item 3) normalizeがlvalueとrvalueを区別するならこのコード は適切でない(lvalueしか渡らないので) perfect-forwardで渡したい Item 33:
C++14のgeneric lambda auto f = [](auto x) { return func(normalize(x)); } struct Lambda { template<class T> auto operator()(T x) const { return func(normalize(x)); } }; 2/9
3.
forwardすべき型は何? xにlvalueとrvalueのどちらが渡されたかはdecltypeで わかる 答え xがlvalueに束縛されたらdecltype(x)はlvalue参照 xがrvalueに束縛されたらdecltype(x)はrvalue参照 参照縮約(reference collapsing)でうまくいく どうやって auto f
= [](auto&& x) { return func(normalize(std::forward<???>(x))); } auto f = [](auto&& x) { return func(normalize(std::forward<decltype(x)>(x))); } 3/9
4.
...を使う 可変引数パラメータ auto f =
[](auto&&... x) { return func(normalize(std::forward<decltype(x)>(x)...)); } 4/9
5.
std::bind std::bind1st, std::bind2ndの後継 入ったがlambdaに比べてメリットは殆ど無い lambdaの場合 1h, 30sはユーザ定義リテラル Item
34: std::bindよりlambda using namespace std::chrono; using namespace std::literals; void setAlarm(Time t, Sound s, Duration d); auto setSoundL = [](Sound s) { setAlarm(steady_clock::now() + 1h, s, 30s); } 5/9
6.
間違いその1 bindするときにnow()が呼ばれてしまう 間違いその2 now() + 1hを遅延させる 型を明記しないstd::plus<>()はC++14から C++11ならstd::plus<steady_clock::time_point>() テキストも間違えていた(see
eratta) 正解(bind3段重ね) bindは評価タイミングに注意 auto setSoundB = std::bind(setAlarm, std::bind(std::plus<>(), steady_clock::now(), 1h), _1, 30s); auto setSoundB=std::bind(setAlarm,steady_clock::now()+1h,_1,30s); auto setSoundB = std::bind(setAlarm,std::bind(std::plus<>(), std::bind(steady_clock::now), 1h), _1, 30s); 6/9
7.
関数が追加された lambdaの場合はそのままうまくいく bindはコンパイルエラー std::bindは関数を正しくキャストする必要あり その他の違い lambdaは普通の関数で大抵inline化される bindは関数ポインタを保持(ちょっと非効率かも) bindは常に値をcopyする。参照にしたいならstd::ref setAlarmがoverloadされているとき using SetAlarmType =
void(*)(Time t, Sound s, Duration d); auto setSoundB = std::bind(static_cast<SetAlarmType>(setAlarm), std::bind(std::plus<>(), steady_clock::now(), 1h), _1, 30s); void setAlarm(Time t, Sound s, Duration d, Volume v); 7/9
8.
moveキャプチャ C++11のlambdaはmoveキャプチャがない std::bindと組み合わせるsee Item 32 多態する関数オブジェクト ただしC++14のautoつきlambdaで解決 bindの利点(レアケース) struct
A { template<class T> void operator()(const T& p) const; }; A a; auto fB = std::bind(a, std::placeholders::_1); fB(123); fB(nullptr); fB("test"); // C++14 auto fL = [a](const auto& p) { a(p); }; fL(123); fL(nullptr); fL("test"); 8/9
9.
Item 33 generic lambdaの中でstd::forwardしたいときは decltype()を使う Item
34 C++14ではstd::bindの代わりにlambdaを使う C++11ではmoveキャプチャと多態する関数オブジェクトで のみ意味があるかも まとめ 9/9
Jetzt herunterladen