#include <iostream>
#include <string>
void fun1( const std::string& strParm )
{
std::cout << "In [void fun1( const std::string& strParm )] :: " << strParm << std::endl;
}
void fun2( std::string& strParm )
{
std::cout << "In [void fun2( std::string& strParm )] :: " << strParm << std::endl;
}
int main()
{
std::string strValue1 = "Hello ";
std::string strValue2 = "World!!!";
fun1( strValue1 + strValue2 ); // Ok
fun2( strValue1 ); // Ok
fun2( strValue1 + strValue2 ); // Compilation error
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCBmdW4xKCBjb25zdCBzdGQ6OnN0cmluZyYgc3RyUGFybSApCnsKCXN0ZDo6Y291dCA8PCAiSW4gW3ZvaWQgZnVuMSggY29uc3Qgc3RkOjpzdHJpbmcmIHN0clBhcm0gKV0gOjogIiA8PCBzdHJQYXJtIDw8IHN0ZDo6ZW5kbDsKfQoKCnZvaWQgZnVuMiggc3RkOjpzdHJpbmcmIHN0clBhcm0gKQp7CglzdGQ6OmNvdXQgPDwgIkluIFt2b2lkIGZ1bjIoIHN0ZDo6c3RyaW5nJiBzdHJQYXJtICldIDo6ICIgPDwgc3RyUGFybSA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgCnsKCXN0ZDo6c3RyaW5nIHN0clZhbHVlMSA9ICJIZWxsbyAiOwoJc3RkOjpzdHJpbmcgc3RyVmFsdWUyID0gIldvcmxkISEhIjsKCQoJZnVuMSggc3RyVmFsdWUxICsgc3RyVmFsdWUyICk7CS8vIE9rCglmdW4yKCBzdHJWYWx1ZTEgKTsJCQkJLy8gT2sKCWZ1bjIoIHN0clZhbHVlMSArIHN0clZhbHVlMiApOwkvLyBDb21waWxhdGlvbiBlcnJvcgoJcmV0dXJuIDA7Cn0=
prog.cpp: In function ‘int main()’:
prog.cpp:22:18: error: cannot bind non-const lvalue reference of type ‘std::__cxx11::string&’ {aka ‘std::__cxx11::basic_string<char>&’} to an rvalue of type ‘std::__cxx11::basic_string<char>’
fun2( strValue1 + strValue2 ); // Compilation error
~~~~~~~~~~^~~~~~~~~~~
prog.cpp:10:6: note: initializing argument 1 of ‘void fun2(std::__cxx11::string&)’
void fun2( std::string& strParm )
^~~~