Возможный дубликат:
как инициализировать аргументы функции, которые являются классами со значением по умолчанию
#include <string>
void foo1(const std::string& s = std::string());
void foo2(std::string& s = std::string());
void foo3(const std::string s = std::string());
void foo4(std::string s = std::string());
error at foo2(): default argument for ‘std::string& s’ has type ‘std::string {aka std::basic_string<char>}’
Я понимаю точку компилятора, но я не понимаю, как это не относится к foo1()
.