Es stellte sich heraus, dass ich die C++-Quelldatei als UTF-16-Unicode-codierte Datei gespeichert hatte, komplett mit führenden Unicode Byte Order Mark (BOM) Bytes am Anfang der Datei. Die Datei wurde als UTF-16 auf einem Windows-System gespeichert, einem Versionskontrollsystem übergeben und dann an Linux ausgecheckt. gcc unterstützt Unicode, das als UTF-8 codiert ist, aber nicht Unicode, das als UTF-16 codiert ist.
Die Lösung bestand darin, die Quelldatei wieder in eine standardmäßige Nicht-Unicode-Codierung zu konvertieren.