最近、私はここの範囲-V3からのコメントをコミット読んだ:、コミットメッセージが言う https://github.com/ericniebler/range-v3/commit/a4829172c0d6c43687ba213c54f430202efd7497static_cast <T&&>(t)std :: forwardよりも高速です<T>(t)をコンパイルするには?
に転送しますはわずかSTDを置き換えることにより、コンパイル時間を改善:: はstatic_cast
私は、std::forward<T>(t)
が標準でstatic_cast<T&&>(t)
を返すことを知っています。 また、T &&t
が参照崩壊規則によって普遍的なreferece(または転送参照)である場合、時々static_cast<T&&>(t)
がうまく動作することがわかります。
コミットメッセージには、static_cast
がわずかに向上したパフォーマンスを向上させるというメッセージがあります。 std::forward<T>(t)
がちょうどstatic_cast<T&&>(t)
を返す場合、コンパイルのパフォーマンスにはどのような違いがありますか?
多分std::forward<T>(t)
は何とか控除を必要としますか?または、std::forward<T>(t)
はコンパイラを抑制するいくつかの魔法のことをしますか?