代码之家  ›  专栏  ›  技术社区  ›  Rick Jim DeLaHunt

decltype(*int_iterator+0)的类型是什么?

c++
  •  1
  • Rick Jim DeLaHunt  · 技术社区  · 7 年前
    template <typename AIterator>
    auto foo(AIterator begin) -> decltype(*begin + 0){
        return *begin;
    }
    

    vector<int> ivec = {1,2,3};
    foo(ivec.begin());
    

    我的答卷上说 const reference

    但是IIRC,decltype( int reference + int int ( *begin 是个参考,所以我自然认为 *begin + 0 内景 ).

    例如:

    int a = 3, &b = a;
    decltype(b + 0) d; //d is a int
    

    PS:我试过VS,IDE提示函数的返回类型 foo 内景 .

    C++引物第五

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  3
  •   Lightness Races in Orbit    7 年前

    它是 int ,这正是作者添加 + 0 foo 返回副本(这似乎是它的目的)。

    decltype prvalue公司 T always evaluates to T .

    不是这本书的散文写错了,就是你看错了。