https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66485

            Bug ID: 66485
           Summary: std::string single-character assignment operator
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yurivkhan at gmail dot com
  Target Milestone: ---

gcc’s implementation of std::basic_string contains a non-standard and very
surprising operator= which accepts a single character or anything that is
implicitly castable thereto.

To reproduce:

===
#include <iostream>
#include <string>

int main()
{
    std::string s;
    s = 42;
    std::cout << s << "\n";
}
===

$ g++ --version
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2[…]

$ g++ test.cpp
(with any of -std= variations, with or without -Wall -pedantic)

Observed behavior: compiles, runs, outputs a single character * (asterisk).

Expected behavior: compilation error, because the standard does not define any
such operator=.

Reply via email to