Назначение последовательностей триграфа в C ++?

Согласно C ++ '03 Стандарт 2.3 / 1:

Перед любой другой обработкой каждое вхождение одной из следующих последовательностей из трех символов («триграфические последовательности ») заменяется одним символом, указанным в таблице 1.

----------------------------------------------------------------------------
| trigraph | replacement | trigraph | replacement | trigraph | replacement |
----------------------------------------------------------------------------
| ??=      | #           | ??(      | [           | ??<      | {           |
| ??/      | \           | ??)      | ]           | ??>      | }           |
| ??’      | ˆ           | ??!      | |           | ??-      | ˜           |
----------------------------------------------------------------------------

В реальной жизни это означает, что кодprintf( "What??!\n" ); приведет к печатиWhat| так как??! последовательность триграфа, которая заменяется| персонаж.

Мой вопрос, какова цель использования триграфов? Есть ли практическое преимущество использования триграфов?

UPD: В ответах упоминалось, что некоторые европейские клавиатуры неу них есть все знаки препинания, поэтому неамериканским программистам приходится использовать триграфы в повседневной жизни?

UPD2: Visual Studio 2010 по умолчанию отключил поддержку триграфа.

Ответы на вопрос(9)

Ваш ответ на вопрос