2017-05-14 5 views
0

私はC++を学んでいます。 デバッグ中に、以下の関数への入力としての「要素」が参照(= &)またはrvalue参照(= & &)であるかどうかを知りたいと思います。入力補完が参照(&)または基準値参照(&&)であるかどうかを知ることはできますか?

// This is an example code to explain my question simply. 
template <typename Element> 
void add_container_side(Element&& element) { 
    static std::vector vec; 
    vec.push_back(std::forward<Element>(element)); 
} 

私はデバッガでこの機能をトレースすることによって(= & &)「要素」は、参照(= &)であるかどうかを知るための方法または右辺値参照を持っていますか?言い換えれば、この関数の前にデバッガのスタックを読まずに知ることができますか?私の実際のコードには深いスタックがあります。私は日食のCDTを使用しています。

ありがとうございました。

+2

デバッガは、どのタイプの「Element」が推測されたのかを示しますか? 'T&'の減算は左辺値を意味し、それ以外の場合は右辺値 –

+0

@ M.M:それを教えてくれてありがとう。私はそれを知りませんでした。私はそれを確認する。あなたが言うように、左辺値を自分のコードに置くと、マークと右辺値はありません。ありがとうございました。 – mora

答えて

1

デバッガは、テンプレートパラメータElementがに推定したものを表示する必要があります:

  • T &は、引数が左辺値であったことを意味します。
  • Tは、引数がprvalueであったことを意味します。
  • T &&は、引数がxvalueであったことを意味します。
関連する問題