https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88084
Bug ID: 88084
Summary: basic_string_view::copy doesn't use Traits::copy
Product: gcc
Version: 8.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: n.eugene536 at gmail dot com
Target Milestone: ---
Target: x86_64-linux-gnu
gcc version 8.2.0 (Ubuntu 8.2.0-1ubuntu2~18.04)
Case: g++ a.cpp -std=c++17
struct my_trait : std::char_traits<char>
{
static char* copy(char* dest, const char* src, std::size_t count) {
std::transform(src, src + count, dest,
[](char c) { return std::tolower(c); }
);
return dest;
}
};
int main() {
std::basic_string_view<char, my_trait> s2("AB");
char buf[3]{};
s2.copy(buf, 3);
std::cout << buf << std::endl;
}
The output is: AB
but expected: ab
In Standard: basic_string_view::copy has to be equivalent to traits::copy