#include int test(std::string& str1) { std::string str2 = "hello"; if (str1 == str2) return 2; else return 1; } std::string& strtest(void) { std::string str1 = "hello"; return str1; } int _tmain() { return test(strtest()); } On MSVC: The thread 'Win32 Thread' (0x608) has exited with code 1 (0x1).