What is the meaning of auto when using C++ trailing return type?

后端 未结 2 1529
走了就别回头了
走了就别回头了 2020-12-03 11:16

Instead of usual

void foo (void ) {
    cout << \"Meaning of life: \" << 42 << endl;
}

C++11 allows is an al

相关标签:
2条回答
  • 2020-12-03 11:52

    Consider the code:

    template<typename T1, typename T2>
    Tx Add(T1 t1, T2 t2)
    {
        return t1+t2;
    }
    

    Here the return type depends on expression t1+t2, which in turn depends on how Add is called. If you call it as:

    Add(1, 1.4);
    

    T1 would be int, and T2 would be double. The resulting type is now double (int+double). And hence Tx should (must) be specified using auto and ->

     template<typename T1, typename T2>
        auto Add(T1 t1, T2 t2) -> decltype(t1+t2)
        {
            return t1+t2;
        }
    

    You can read about it in my article.

    0 讨论(0)
  • 2020-12-03 11:59

    In general, the new keyword auto in C++11 indicates that the type of the expression (in this case the return type of a function) should be inferred from the result of the expression, in this case, what occurs after the ->.

    Without it, the function would have no type (thus not being a function), and the compiler would end up confused.

    0 讨论(0)
提交回复
热议问题