Clang 3.0 non supporta i caratteri Unicode negli identificatori. L'ultimo trunk ha un supporto parziale per questo, e credo che qualcuno stia attualmente lavorando per implementarlo completamente.
Per quanto riguarda quando Clang li supporta, dare un'occhiata a C++ 11 (n3242) 2.11 [lex.name].
Tutti i caratteri in un identificatore devono corrispondere [a-zA-Z_0-9]
o l'insieme di caratteri in E.1:
00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF
0100-167F, 1681-180D, 180F-1FFF
200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F
2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF
3004-3007, 3021-302F, 3031-303F
3040-D7FF
F900-FD3D, FD40-FDCF, FDF0-FE44, FE47-FFFD
10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD,
60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD,
B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFF
Il primo carattere deve corrispondere [a-zA-Z_]
o E.1 E.2 escluso:
0300-036F, 1DC0-1DFF, 20D0-20FF, FE20-FE2F
Per quanto riguarda il collegamento, è necessario dare un'occhiata all'ABI C++ che si sta utilizzando. In questo caso (Clang e Linux) sarebbe l'Itanium C++ ABI.
E ... dopo aver cercato per sempre, le uniche cose che ho trovato erano su JNI e internamenti gcc. Quando Clang implementa questo, userà lo stesso mangling di gcc. In entrambi i casi, se tutto il codice che compilate usando gli identificatori unicode è compilato con lo stesso compilatore, si collegherà correttamente.
Solo per curiosità, stai migrando dall'APL? –
'clang ++' 3.4 supporta questo. Dal 3.3 (http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features) – alfC