https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91182
Bug ID: 91182 Summary: deprecated attribute string-literal Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: aaron.ballman+gcc at gmail dot com Target Milestone: --- Using a wide string literal argument to the deprecated attribute has unfortunate behavior when trying to print that argument as part of a diagnostic. Consider: ``` [[deprecated(L"Test")]] void foo(); int main() { foo(); } ``` Produces this for output: warning: 'void foo()' is deprecated: T [-Wdeprecated-declarations] It seems that the diagnostic is treating the literal as always being a narrow string literal. Similar bad behavior happens with u and U prefixes as well.