Назначение последовательностей триграфа в C ++?
Согласно C ++ '03 Стандарт 2.3 / 1:
Перед любой другой обработкой каждое вхождение одной из следующих последовательностей из трех символов («триграфические последовательности ») заменяется одним символом, указанным в таблице 1.
----------------------------------------------------------------------------
| trigraph | replacement | trigraph | replacement | trigraph | replacement |
----------------------------------------------------------------------------
| ??= | # | ??( | [ | ??< | { |
| ??/ | \ | ??) | ] | ??> | } |
| ??’ | ˆ | ??! | | | ??- | ˜ |
----------------------------------------------------------------------------
В реальной жизни это означает, что кодprintf( "What??!\n" );
приведет к печатиWhat|
так как??!
последовательность триграфа, которая заменяется|
персонаж.
Мой вопрос, какова цель использования триграфов? Есть ли практическое преимущество использования триграфов?
UPD: В ответах упоминалось, что некоторые европейские клавиатуры неу них есть все знаки препинания, поэтому неамериканским программистам приходится использовать триграфы в повседневной жизни?
UPD2: Visual Studio 2010 по умолчанию отключил поддержку триграфа.