Tよりも非constなTとしたほうが良い。T&およびT&&を受ける関数*1へ渡す際に、同関数呼び出し時のオーバーロード解決失敗によるコンパイルエラーを引き起こす。Overflowで見つけた質問と回答に基づく。defect候補とのこと。B&とB&&のオーバーロードを提供するため、C++11/14標準規格に厳密準拠したコンパイラとライブラリでのみ問題が生じる。rvalue参照型が存在しなかったC++03標準規格では問題とならない。2012)では正常にコンパイルできる。3.5.0/libc++(-std=c++11)では下記の通りコンパイルエラーとなる。これは期待される結果ではないが、C++11言語仕様準拠の振る舞いとなっている。詳細仕様は理解できていない。C++11/14モードでも正常にコンパイルできるようになる。よるオーバーロード提供は、オブジェクトのコピー/ムーブ回数を最小化する実装パターンとなっている。1注目記事はてなブログをはじめよう!yohhoyさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。