Le but de Trigraph séquences en C++?

Selon C++03 Standard 2.3/1:

Avant tout autre traitement a lieu, chaque occurrence de l'une des séquences suivantes de trois personnages (“trigraph séquences”) est remplacé par le caractère unique indiqué dans le Tableau 1.

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

Dans la vie réelle qui signifie que le code printf( "What??!\n" ); entraînera l'impression What| parce que ??! est un trigraph séquence qui est remplacé par le | caractère.

Ma question est ce que le but de l'utilisation de trigraphs? Est-il un avantage pratique de l'utilisation de trigraphs?

UPD: Dans les réponses a été mentionné que, en europe, certains des claviers n'ont pas tous les caractères de ponctuation, donc non NOUS les programmeurs ont à utiliser trigraphs dans la vie de tous les jours?

UPD2: Visual Studio 2010 a trigraph soutien désactivée par défaut.

  • Certains signes de ponctuation est plus difficile à atteindre européenne claviers (au point que certains programmeurs utilisent le clavier AMÉRICAIN à taper plus vite) n'en ai pas vu où les signes de ponctuation est entièrement disparu - peut-être pour les langues slaves?
  • Il peut arriver que certains terminaux et/ou de virtualisation de ne pas vous laisser facilement accès à certains personnages. Dans mon expérience, la principale cause est le tilde.
  • de taper sur mon DE-les touches mortes clavier, # est un touche next pour revenir, \ est "alt gr"+"ß" (près de 0), ^ est "^"+"^" (en raison de touches mortes; à côté, 1), [ est "alt gr"+"8", ] est "alt gr"+"9", | est "alt gr"+"<", { est "alt gr"+"7", } est "alt gr"+"0", et ~ est "~"+"~" (en raison de touches mortes, juste au-dessus de #). donc pas vraiment une grosse affaire. mes doigts sont telles que la saisie de ces combinaisons sur leur propre 😀
  • J'ai pensé, qu'il est normal d'avoir deux configurations de clavier et de basculer entre eux, selon le travail que je fais sur l'ordinateur. C'est la façon la plus commune en Europe centrale de la région. C'est assez effrayant pour l'utilisation de ces trigraphs. J'avais vote pour la suppression de ce de la norme.
  • Parce que "la source de jeu de caractères de C source des programmes est contenue à l'intérieur de l'ASCII 7 bits jeu de caractères mais c'est un sur-ensemble de la norme ISO 646-1983 Invariant Code Jeu........"
  • Vous avez votre souhait!
  • Pour info, trigraphs sera supprimé en C++17, malgré les protestations de IBM. L'adaptation du code qui utilise trigraphs sera simple, parce que trigraphs sont vraiment facile à analyser.
  • Nous discutons de C++03 Standard ici. La publication de la nouvelle norme ne signifie pas que tous les systèmes dans le monde le prend en charge instantanément. Et la question était de savoir le but initial de cette fonctionnalité.
  • À mon avis, je dirais trigraphs existent encore principalement à l'écriture d'obfuscation de code :-)