c ++ rvalue移动语义,关于流的问题

时间:2012-10-02 22:02:23

标签: c++ c++11 move-semantics

关于语义和性能的几个问题:

x = 0;
While (x < 10) {
  std::cout << "Some text here to send to cout";
  ++x;
}

我正在使用gcc 4.7,流文本是否应该包含在std :: move中?

像这样:

   x = 0;
    While (x < 10) {
      std::cout << std::move("Some text here to send to cout");
      ++x;
    }

虽然我在问,在这样的情况下,将字符串设置为静态更好:

x = 0;
While (x < 10) {
  static const char* s = "Some text here to send to cout";
  std::cout << s;
  ++x;
}

2 个答案:

答案 0 :(得分:3)

移动一个字符串文字并不会对你有好处:它会在任何情况下产生一个指针,这个指针将按值传递。关于使字符串文字静态,我希望它没有任何区别。

答案 1 :(得分:1)

不,不。 operator<< const char *参数是否为rvalue或lvalue没有任何区别:在后一种情况下,标准左值到右值(纯概念)转换将在传递给{之前自动应用{1}}。