>>581
この例のままだと引数の省略は出来ない

void a(const std::string *s = 0);
とするか、意味は少し変わるが
void a(const std::string& s=std::string());
としてempty()の場合無しとして扱うか
俺は後者をよく使う