Пара вопросов о семантике и производительности:
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;
}
Перемещение строкового литерала на самом деле не принесет вам большой пользы: в любом случае он даст указатель, и этот указатель будет передан по значению. Что касается создания строкового литерала статическим, я ожидаю, что это не имеет никакого значения вообще.
Нет и нет Там нет никакой разницы для operator<<
будь то const char *
Аргументом является rvalue или lvalue: в последнем случае стандартное преобразование lvalue в rvalue (чисто концептуальное) будет автоматически применено перед его передачей operator<<
,