0

编码:

#include <vector>

int main()
{
    std::vector<int> v1 = {12, 34};
    std::vector<int> v2 = {56, 78};

    //Doesn't work.
    v1.push_back(v2[0]);

    //Works.
    int i = v2[0];
    v1.push_back(i);

    return 0;
}

出于某种原因,第一个 push_back 不起作用,而第二个则起作用。Eclipse 为该行给出了错误:

Invalid arguments ' Candidates are: void push_back(const int &) void push_back(int &&) '

有人可以解释那里发生了什么吗?谢谢!

编辑:

代码实际上编译得很好。出于某种原因,Eclipse 不同意这是有效代码。

4

1 回答 1

1

g++ 4.7.3如果我用with编译代码

g++ test.cpp --std=c++0x

它编译正确,如果我尝试打印v1[2];,我会得到正确的结果。

std::cout << v1[2]; // 56

Eclipse 代码分析器工具 ( CODAN ) 在这种情况下可能不正确。

依赖 C++(在这种情况下与 C++11 兼容)编译器的输出。

于 2013-06-13T18:26:11.320 回答