-2

私は調査autoしましたが、初期化された値から型を推測することを知っています。の使用に関するガイドラインを作成しようとするとauto、以下のステートメントをルールとして記述できますか?

  1. auto &&変更可能なすべての値 (ユニバーサル参照であるため、r 値と l 値) に使用します。
  2. auto &&読み取り専用の値であっても、
  3. auto可能な限り使用してください (コーディング スタイルは個人の好みです)。

編集

class Test
{
public:
    Test() = default;
    Test(const Test&) = default;
    Test(Test&&) = default;

    int i = 1;
};

Test getObj()
{
    return Test();
}

Test& getObjByRef()
{
    static Test tobj;
    return tobj;    
}

const Test getObjConst()
{
    return Test();
}

int main()
{
    auto && obj1 = getObj();
    obj1.i = 2;

    std::cout << " getObj returns: " << getObj().i << std::endl;

    auto&& obj2 = getObjByRef();
    obj2.i = 3;

    std::cout << " getObjByRef returns: " << getObjByRef().i << std::endl;

    auto && obj3 = getObjConst();

    //obj3.i = 4;  => //Error   C3490   'i' cannot be modified because it is being accessed through a const object

    return 0;
}

したがって、上記の例auto &&では、3つの関数すべてに使用しました

  • getObj
  • getObjByRef
  • getObjConst

期待どおりに動作します。これで、次のように結論付けることができます。

  • auto &&任意の値を保持 (初期化) するために使用できます。OR
  • auto &&可能な限りあらゆる場所 を使用できます。

このアプローチの落とし穴はありますか?

4

1 に答える 1

-4

1) はい 2) はい 3) あなたが言ったように、「コーディング スタイルの個人的な好み」

于 2016-07-12T09:10:23.417 に答える