It seems that BOM is a Unicode UTF facility that MS thought was a
great thing to implement, and I certainly agree with that
assessment. BOM tells even more than its name implies. A program
can detect if a file is encoded in UTF-8, 16LE, 16BE, 32LE and 32BE
in a very easy way.
I think that it would be good for gcc (or cpp) to support this
because it would make for better interoperability with Visual C++,
and it would allow each file to indicate how it is encoded without
having to rely on some setting that may or may not provide the
correct information in every case.
cpp relies on libiconv for almost all of it's translation support.
Try preprocessing a file with iconv and see if you can compile it
afterwards. If you can, then it's a gcc bug, otherwise you'll need to
bug the libiconv folks about implementing support.
-eric