The missing move constructor for stringstream
is a known missing feature in GCC's implementation of the C++ standard library. If I'm reading the comments on that report correctly, it is intentionally missing because it would rely on other changes, and those other changes would break the ABI, so the GCC folks have chosen to break the ABI only once (if possible), and that time has not yet come.
Why can't I pass an rvalue std::stringstream by value to a function?
-
01-09-2022 - |
Question
Why does this code not compile?
#include <sstream>
void f(std::stringstream) { }
int main() {
f(std::stringstream{});
}
I get this error:
error: use of deleted function ‘std::basic_stringstream<char>::basic_stringstream(const std::basic_stringstream<char>&)’
f(std::stringstream{});
^
If I replace std::stringstream
with another type that's noncopyable it works fine. Shouldn't this use stringstream
's move constructor?
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow