pass by value instead of rvalue reference for RVO to take place
strbuffer: use static initializer instead of variadic constructor