'a string'
- это так называемый «многозначный литерал».Он имеет тип int
и значение, определяемое реализацией.Это [lex.ccon]
в стандарте.
Я не знаю, какие значения MSVC присваивает литералам с несколькими символами, и я точно не знаю, что макрос MS _T
делает с ним., но я ожидаю, что вы получите узкий литерал с несколькими символами на узких сборках и широкий литерал с несколькими символами на широких сборках.Префикс L
одинаков для строковых и символьных литералов.
В любом случае, это неправильно: литералы с несколькими символами практически бесполезны и, конечно, не могут заменить строки."a string"
- это строковый литерал, который вам нужен.