Я просто узнаю, что этот маленький кусочек кода С++ не дает мне тот же результат с clang++ и с g++:
#include <iostream>
#include <string>
using namespace std;
const string& createString(char c) {
static string s;
s="";
for(int i=0; i<10; ++i) {
s+=c;
}
return s;
}
int main() {
cout << createString('a') << ' ' << createString('z') << endl;
return 0;
}
С clang++ он пишет:
aaaaaaaaaa zzzzzzzzzz
как я хочу, но с g++ он пишет:
aaaaaaaaaa aaaaaaaaaa
Почему так? Соответствует ли стандарт реализации g++? И что мне делать, если я хочу, чтобы функция возвращала временный "большой" тип по ссылке, как здесь, чтобы избежать ненужной копии?
спасибо, если вы можете помочь (и простите меня, если мой вопрос не ясен, английский не мой естественный язык).