Copy elision
http://dbpedia.org/resource/Copy_elision an entity of type: WikicatCompilerOptimizations
In C++ computer programming, copy elision refers to a compiler optimization technique that eliminates unnecessary copying of objects. The C++ language standard generally allows implementations to perform any optimization, provided the resulting program's observable behavior is the same as if, i.e. pretending, the program were executed exactly as mandated by the standard. Beyond that, the standard also describes a few situations where copying can be eliminated even if this would alter the program's behavior, the most common being the return value optimization (see ). Another widely implemented optimization, described in the C++ standard, is when a temporary object of class type is copied to an object of the same type. As a result, copy-initialization is usually equivalent to direct-initiali
rdf:langString
C++プログラミングにおけるコピーの省略(コピーのしょうりゃく)とは、不必要なを除去するコンパイラ最適化技術のことである。C++言語標準は基本的に、出来上がったプログラムの表面上の動作が言語標準が義務付けた通りであれば、実装はどのような最適化を施しても良いとしている。() しかし、プログラムの動作が変更され得るにもかかわらず、それでもコピーが省略されうる状況を言語標準は幾つか挙げている。その中で最も有名なのがであり、もう一つは、クラス型のが、同じ型のオブジェクトへとコピーされるときの最適化である。これも広く実装されており、C++言語標準で挙げられている。 結果的に、コピー初期化と直接初期化の間にパフォーマンス上の違いはないが、セマンティクス上ではそうではなく、コピー初期化にはアクセス可能なが未だに必要である。 なお、参照に束縛されている一時オブジェクトは最適化されない。例: 言語標準によると、例外として投げられるオブジェクトにも、同じような最適化が適用される。 しかし、投げられたオブジェクトから例外オブジェクトへのコピー、そして例外オブジェクトから例外宣言のcatch節へのコピーのどちらも、最適化されるかもしれないし、されないかもしれない。これは、でも、名前付きオブジェクトでも同様である。 例:
rdf:langString
复制省略或者译作“省略不必要的复制”(copy elision),是C++语言标准中定义的编译优化技术。 当一个class类型的的临时对象用于初始化同类型的对象时,复制初始化通常优化为直接初始化;但在语义上仍然需要复制构造函数是可访问的。 例如: #include struct C { explicit C(int) {} C(const C&) { std::cout<<"copy constructor"<rdf:langString
rdf:langString
Copy elision
rdf:langString
コピーの省略
rdf:langString
复制省略
xsd:integer
26991951
xsd:integer
1106684978
rdf:langString
In C++ computer programming, copy elision refers to a compiler optimization technique that eliminates unnecessary copying of objects. The C++ language standard generally allows implementations to perform any optimization, provided the resulting program's observable behavior is the same as if, i.e. pretending, the program were executed exactly as mandated by the standard. Beyond that, the standard also describes a few situations where copying can be eliminated even if this would alter the program's behavior, the most common being the return value optimization (see ). Another widely implemented optimization, described in the C++ standard, is when a temporary object of class type is copied to an object of the same type. As a result, copy-initialization is usually equivalent to direct-initialization in terms of performance, but not in semantics; copy-initialization still requires an accessible copy constructor. The optimization can not be applied to a temporary object that has been bound to a reference.
rdf:langString
C++プログラミングにおけるコピーの省略(コピーのしょうりゃく)とは、不必要なを除去するコンパイラ最適化技術のことである。C++言語標準は基本的に、出来上がったプログラムの表面上の動作が言語標準が義務付けた通りであれば、実装はどのような最適化を施しても良いとしている。() しかし、プログラムの動作が変更され得るにもかかわらず、それでもコピーが省略されうる状況を言語標準は幾つか挙げている。その中で最も有名なのがであり、もう一つは、クラス型のが、同じ型のオブジェクトへとコピーされるときの最適化である。これも広く実装されており、C++言語標準で挙げられている。 結果的に、コピー初期化と直接初期化の間にパフォーマンス上の違いはないが、セマンティクス上ではそうではなく、コピー初期化にはアクセス可能なが未だに必要である。 なお、参照に束縛されている一時オブジェクトは最適化されない。例: #include int n = 0;struct C { explicit C(int) {} C(const C&) { ++n; } // 目に見える副作用を持つコピーコンストラクタ}; // 静的な記憶時間を持つオブジェクトを書き換えるint main { C c1(42); // 直接初期化。 C::C(42) を呼ぶ C c2 = C(42); // コピー初期化。 C::C( C(42) ) を呼ぶ std::cout << n << std::endl; // コピーが省略されたなら 0 、そうでなければ 1 を出力する return 0;} 言語標準によると、例外として投げられるオブジェクトにも、同じような最適化が適用される。 しかし、投げられたオブジェクトから例外オブジェクトへのコピー、そして例外オブジェクトから例外宣言のcatch節へのコピーのどちらも、最適化されるかもしれないし、されないかもしれない。これは、でも、名前付きオブジェクトでも同様である。 例: #include struct C { C {} C(const C&) { std::cout << "Hello World!
"; }};void f { C c; throw c; // 名前付きオブジェクト c を例外オブジェクトにコピー。} // このコピーが省略されるかどうかは不確かである。int main { try { f; } catch(C c) { // 例外オブジェクトを例外宣言内の一時領域にコピー。 } // このコピーも省略されるかどうかは不確かである。} 言語標準に準拠したコンパイラは、上記のコードから"Hello World!"と二度出力するプログラムを生成しなければならなかった。C++11では、名前付きオブジェクトの例外オブジェクトへのコピーと、例外ハンドラで宣言されたオブジェクトへのコピーを省略することを本質的に許したことで、その問題は対処された。 GCCは-fno-elide-constructorsオプションを提供して、コピーの省略を無効化できるようにしている。このオプションは戻り値最適化の効果を発見(あるいは見逃し!)するのに有用である。平時にこの重要な最適化を無効化することは推奨しない。
rdf:langString
复制省略或者译作“省略不必要的复制”(copy elision),是C++语言标准中定义的编译优化技术。 当一个class类型的的临时对象用于初始化同类型的对象时,复制初始化通常优化为直接初始化;但在语义上仍然需要复制构造函数是可访问的。 例如: #include struct C { explicit C(int) {} C(const C&) { std::cout<<"copy constructor"<
xsd:nonNegativeInteger
12254
data from the linked data cloud