我有一个愚蠢的问题.我尝试切换到c ++ 11标头,其中一个是chrono.但我的问题是我无法控制时间操作的结果.例如:
auto t=std::chrono::high_resolution_clock::now();
cout<<t.time_since_epoch();
Run Code Online (Sandbox Code Playgroud)
得到:
初始化
‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char, _Traits = std::char_traits<char>, _Tp = std::chrono::duration<long int, std::ratio<1l, 1000000l> >]’... /usr/include/c++/4.6/ostream的 参数1
cout<<(uint64_t)t.time_since_epoch();
Run Code Online (Sandbox Code Playgroud)
给出无效的演员
尝试做一些简单的事情时,我遇到了一个令人困惑的错误消息
std::cout << std::vector<int>{1,2,3};
Run Code Online (Sandbox Code Playgroud)
这说
cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
int main() { std::cout << std::vector<int>{1,2,3}; }
Run Code Online (Sandbox Code Playgroud)
(使用gcc-4.8.1和-std = c ++ 11测试)
SO有类似的问题,如重载运算符<<:无法将左值绑定到'std :: basic_ostream <char> &&',这是关于某些带嵌套类的用户定义类.还有一个工作围绕这个问题的公认答案.
但我不知道这是否适用std::vector.有人可以解释为什么会发生这种错误std::vector,以及如何解释它?
谢谢