3 ms·
That doesn't help, the parameter might be invalidated by a destructor (e.g. passing foo.c_str(), where foo is a std::string on the stack)
by murderfs 6y ago
That doesn't help, the parameter might be invalidated by a destructor (e.g. passing foo.c_str(), where foo is a std::string on the stack)
- beagle3 6y agoThen it isn't destructor-free (and not passed by reference if it's on the stack).
- murderfs 6y agoNo. Arguments that are trivial types can still depend on other objects not being destroyed. void foo(const char* str) { if (*str == '\0') return; printf("%c", str[0]); std::string x = str + 1; return foo(x.c_str()); }