我可以将默认值传递给std :: string的引用吗?

Ste*_*ini 8 c++ const reference default-arguments

void doStuff( std::string const & s1, std::string const & s2="");
Run Code Online (Sandbox Code Playgroud)

我想知道这个代码在C++中是否合法,对于s2字符串.我希望有一个默认参数,但是传递一个引用并且默认为空字符串.是否会临时创建,引用会指向那个临时的,还是非法的C++?

bil*_*llz 13

是的,这是合法的.const将确保临时持续到功能doStuff完成.

§12.2.5

函数调用(5.2.2)中的引用参数的临时绑定将持续到包含该调用的完整表达式完成为止.