Retourner au contenu associé (dépêche : C++ se court-circuite le constructeur de copie)
Posté par Mathieu Schroeter (site web personnel, Mastodon) le 16 décembre 2016 à 11:36. En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
Hello,
Pour le fun j'ai testé le code suivant avec le compilateur CL de Microsoft en toolset vc140.
#include <iostream> int t[6] = { 0, 0, 0, 0, 0, 0 }; struct A { A () { ++t[0]; } A (A const&) { ++t[1]; } A& operator=(A const&) { ++t[2]; return *this; } //#if __cplusplus > 201100 A (A &&) { ++t[3]; } A& operator=(A &&) { ++t[4]; return *this; } //#endif ~A () { ++t[5]; } }; A f () { return A (A ()); } int main () { { A a = A (A (A (f ()))); } std::cout << "Dflt = " << t[0] << "\n" "Copy = " << t[1] << "\n" "CpAs = " << t[2] << "\n" //#if __cplusplus > 201100 "Move = " << t[3] << "\n" "MvAs = " << t[4] << "\n" //#endif "Dtor = " << t[5] << '\n'; }
Résultats :
Dflt = 1 Copy = 0 CpAs = 0 Move = 3 MvAs = 0 Dtor = 4
A priori CL ne sait pas faire l'élision aussi efficacement que g++ et clang++ dans ce cas de figure.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Test avec le compilateur CL de Microsoft en toolset vc140
Posté par Mathieu Schroeter (site web personnel, Mastodon) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
Hello,
Pour le fun j'ai testé le code suivant avec le compilateur CL de Microsoft en toolset vc140.
Résultats :
A priori CL ne sait pas faire l'élision aussi efficacement que g++ et clang++ dans ce cas de figure.