Enviar búsqueda
Cargar
Effective Modern C++ 勉強会#6 Item25
•
0 recomendaciones
•
2,048 vistas
Takashi Hoshino
Seguir
Effective Modern C++ 勉強会#6 の Item 25 の紹介資料
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 15
Descargar ahora
Descargar para leer sin conexión
Recomendados
Effective modern c++ 5
Effective modern c++ 5
uchan_nos
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
mooopan
Emcpp item41
Emcpp item41
mitsutaka_takeda
D言語会議#1
D言語会議#1
9rnsr
Emcpp item31
Emcpp item31
mitsutaka_takeda
Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38
Takashi Hoshino
10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
Recomendados
Effective modern c++ 5
Effective modern c++ 5
uchan_nos
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
mooopan
Emcpp item41
Emcpp item41
mitsutaka_takeda
D言語会議#1
D言語会議#1
9rnsr
Emcpp item31
Emcpp item31
mitsutaka_takeda
Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38
Takashi Hoshino
10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
トランザクションの並行処理制御
トランザクションの並行処理制御
Takashi Hoshino
YARN: a resource manager for analytic platform
YARN: a resource manager for analytic platform
Tsuyoshi OZAWA
メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介
Takashi Hoshino
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Takashi Hoshino
Effective modern-c++#9
Effective modern-c++#9
Tatsuki SHIMIZU
emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Mitsuru Kariya
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Keisuke Fukuda
Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15
Mitsuru Kariya
Effective Modern C++ 勉強会#7 Item 27
Effective Modern C++ 勉強会#7 Item 27
Mitsuru Kariya
Effective Modern C++ study group Item39
Effective Modern C++ study group Item39
Takatoshi Kondo
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
Akihiro Nishimura
Effective Modern C++勉強会#2 Item 11(,12)
Effective Modern C++勉強会#2 Item 11(,12)
Keisuke Fukuda
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション
Takashi Hoshino
Effective modern c++ 8
Effective modern c++ 8
uchan_nos
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Serializabilityとは何か
Serializabilityとは何か
Takashi Hoshino
Isolation Level について
Isolation Level について
Takashi Hoshino
Más contenido relacionado
Destacado
トランザクションの並行処理制御
トランザクションの並行処理制御
Takashi Hoshino
YARN: a resource manager for analytic platform
YARN: a resource manager for analytic platform
Tsuyoshi OZAWA
メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介
Takashi Hoshino
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Takashi Hoshino
Effective modern-c++#9
Effective modern-c++#9
Tatsuki SHIMIZU
emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Mitsuru Kariya
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Keisuke Fukuda
Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15
Mitsuru Kariya
Effective Modern C++ 勉強会#7 Item 27
Effective Modern C++ 勉強会#7 Item 27
Mitsuru Kariya
Effective Modern C++ study group Item39
Effective Modern C++ study group Item39
Takatoshi Kondo
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
Akihiro Nishimura
Effective Modern C++勉強会#2 Item 11(,12)
Effective Modern C++勉強会#2 Item 11(,12)
Keisuke Fukuda
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション
Takashi Hoshino
Effective modern c++ 8
Effective modern c++ 8
uchan_nos
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Destacado
(20)
トランザクションの並行処理制御
トランザクションの並行処理制御
YARN: a resource manager for analytic platform
YARN: a resource manager for analytic platform
メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Effective modern-c++#9
Effective modern-c++#9
emc++ chapter32
emc++ chapter32
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
effective modern c++ chapeter36
effective modern c++ chapeter36
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#7 Item 27
Effective Modern C++ 勉強会#7 Item 27
Effective Modern C++ study group Item39
Effective Modern C++ study group Item39
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
Effective Modern C++勉強会#2 Item 11(,12)
Effective Modern C++勉強会#2 Item 11(,12)
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション
Effective modern c++ 8
Effective modern c++ 8
Emcjp item33,34
Emcjp item33,34
emcjp Item 42
emcjp Item 42
Emcjp item21
Emcjp item21
Más de Takashi Hoshino
Serializabilityとは何か
Serializabilityとは何か
Takashi Hoshino
Isolation Level について
Isolation Level について
Takashi Hoshino
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
Takashi Hoshino
WalB Driver Internals
WalB Driver Internals
Takashi Hoshino
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
Takashi Hoshino
WalBの紹介
WalBの紹介
Takashi Hoshino
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX 触ってみた 追加実験 (TTAS)
Takashi Hoshino
Suffix Array 構築方法の紹介
Suffix Array 構築方法の紹介
Takashi Hoshino
An Efficient Backup and Replication of Storage
An Efficient Backup and Replication of Storage
Takashi Hoshino
ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法
Takashi Hoshino
Intel TSX について x86opti
Intel TSX について x86opti
Takashi Hoshino
WalB: Block-level WAL. Concept.
WalB: Block-level WAL. Concept.
Takashi Hoshino
VMware Backup in Cybozu Labs
VMware Backup in Cybozu Labs
Takashi Hoshino
Vmbkp: VMware vSphere Incremental Backup Tool
Vmbkp: VMware vSphere Incremental Backup Tool
Takashi Hoshino
Inside database
Inside database
Takashi Hoshino
Más de Takashi Hoshino
(17)
Serializabilityとは何か
Serializabilityとは何か
Isolation Level について
Isolation Level について
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
WalB Driver Internals
WalB Driver Internals
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
WalBの紹介
WalBの紹介
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX 触ってみた 追加実験 (TTAS)
Suffix Array 構築方法の紹介
Suffix Array 構築方法の紹介
An Efficient Backup and Replication of Storage
An Efficient Backup and Replication of Storage
ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法
Intel TSX について x86opti
Intel TSX について x86opti
WalB: Block-level WAL. Concept.
WalB: Block-level WAL. Concept.
VMware Backup in Cybozu Labs
VMware Backup in Cybozu Labs
Vmbkp: VMware vSphere Incremental Backup Tool
Vmbkp: VMware vSphere Incremental Backup Tool
Inside database
Inside database
Último
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Último
(11)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Effective Modern C++ 勉強会#6 Item25
1.
Effective Modern C++ 勉強会#6
Item 25 星野 喬(@starpoz) サイボウズ・ラボ 2015-06-17 1
2.
Item 25 Use std::move
on rvalue references, std::forward on universal references. 2
3.
Rvalue reference で受けるとき •
渡された中身は move して良い 3 struct Widget { std::string name; std::shared_ptr<SomeDataStructure> p; Widget(Widget&& rhs) : name(std::move(rhs.name)) , p(std::move(rhs.p)) { } };
4.
Universal reference で受けるとき •
渡された中身は forward する 4 struct Widget { std::string name; template <typename T> void setName(T&& newName) { name = std::forward<T>(newName); } };
5.
Rvalue reference に
std::forward を使うのはやめた方が良い • 動く、けれど • 冗長で • 間違いやすく • 自然ではない 5
6.
Universal reference を
std::move するのはやめた方が良い 6 struct Widget { std::string name; template <typename T> void setName(T&& newName) { name = std::move(newName); } }; std::string getWidgetName() { //... } int main() { Widget w; auto n = getWidgetName(); w.setName(n); // n is unknown now. }
7.
Overload する手段がある • const
lvalue reference と rvalue reference • 欠点 • コードが増える • 効率が悪くなる(ことがある) • 引数の数が増えると爆発する (2^n) 7 struct Widget { void setName(const std::string& newName) { name = newName; } void setName(std::string&& newName) { name = std::move(newName); } } w.setName("Adala Novak");
8.
可変長引数の場合 • Universal reference
にせざるをえない 8 template <class T, class... Args> shared_ptr<T> make_shared(Args&&... args); template <class T, class... Args> unique_ptr<T> make_unique(Args&&... args);
9.
std::move や std::forward
は 最後に 1 回のみ使う 9 template <typename T> void setSignText(T&& text) { sign.setText(text); auto now = std::chrono::system_clock::now(); signHistory.add(now, std::forward<T>(text)); }
10.
std::move_if_noexcept • 例外が飛ぶ可能性のある関数に渡すときは move しない 10 //
cppreference template<class T> constexpr typename std::conditional< !std::is_nothrow_move_constructible<T>::value && std::is_copy_constructible<T>::value, const T&, T&& >::type move_if_noexcept(T& x);
11.
Rvalue reference を 値返しするとき •
std::move() を使って return すると move をサ ポートしていない場合に copy constructor でコ ピーされる • std::move() 使わないと強制コピー 11 Matrix operator+(Matrix&& lhs, const Matrix& rhs) { lhs += rhs; return std::move(lhs); } Matrix operator+(Matrix&& lhs, const Matrix& rhs) { lhs += rhs; return lhs; // copy }
12.
Universal reference を 値返しするとき •
同様に std::forward を使う • 使わないと強制コピー 12 template <typename T> Fraction reduceAndCopy(T&& frac) { frac.reduce(); return std::forward<T>(frac); }
13.
Local object を値返しするとき •
RVO (return value optimization) される or • Local object を return するとき rvalue として 扱われる 13 Widget makeWidget() { Widget w; // ... return w; } Widget makeWidget() { Widget w; // ... return std::move(w); // don't do this! }
14.
値渡しされた変数を 値返しするとき • RVO はされない •
rvalue reference にはなる 14 Widget makeWidget(Widget w) { return w; }
15.
Item25 Things to
remember • rvalue reference には std::move を、universal reference には std::forward を使う。ただし、 最後に使われるときに。 • 値返しの関数で rvalue reference と universal reference の扱いは同様。 • std::move と std::forward を local objects を return するのに使ってはいけない。使わなけれ ば RVO 対象になる 15
Descargar ahora