Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС STLΒ»

Автор Π‘ΠΊΠΎΡ‚Ρ‚ ΠœΠ΅ΠΉΠ΅Ρ€Ρ

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС STL

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

Β«...На Π½Π΅ΠΌ Π½Π΅ Π±Ρ‹Π»ΠΎ Π»Π΅Π½Ρ‚ΠΎΡ‡ΠΊΠΈ! НС Π±Ρ‹Π»ΠΎ ярлыка! НС Π±Ρ‹Π»ΠΎ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ мСшка!Β»

Π”ΠΎΠΊΡ‚ΠΎΡ€ Π—ΡŽΡΡ, «Как Π“Ρ€ΠΈΠ½Ρ‡ ΡƒΠΊΡ€Π°Π» РоТдСство»

Π― Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ написал ΠΎ STL (Standard Template Library) Π² 1995 Π³ΠΎΠ΄Ρƒ. Моя ΠΊΠ½ΠΈΠ³Π° Β«More Effective C++Β» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»Π°ΡΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Но этого оказалось нСдостаточно, ΠΈ вскорС я Π½Π°Ρ‡Π°Π» ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сообщСния с вопросом, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ написана ΠΊΠ½ΠΈΠ³Π° Β«Effective STLΒ».

НСсколько Π»Π΅Ρ‚ я сопротивлялся этой ΠΈΠ΄Π΅Π΅. Π‘Π½Π°Ρ‡Π°Π»Π° я Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π» достаточным ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ программирования STL ΠΈ Π½Π΅ считал Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π΄Π°Π²Π°Ρ‚ΡŒ совСты. Но врСмя шло, ΠΈ Π½Π° смСну этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. БСсспорно, появлСниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡ€ΠΎΡ€Ρ‹Π² Π² области эффСктивной ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π½ΠΎ Π² области использования STL Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ чисто практичСскиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π³Π»Π°Π·Π°. Адаптация Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ STL, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ самых ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ…, Π±Ρ‹Π»Π° сопряТСна с мноТСством ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ объяснялось Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ различиями Π² рСализациях, Π½ΠΎ ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ шаблонов компиляторов. Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ STL Π±Ρ‹Π»ΠΈ Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒΡŽ, поэтому постиТСниС Β«Π΄Π°ΠΎ программирования Π² STLΒ» ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ нСпростой. А ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ программист справлялся с этой Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° другая β€” поиск достаточно ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ справочной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π”Π°ΠΆΠ΅ самая мСлкая ошибка ΠΏΡ€ΠΈ использовании STL ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Π»Π°ΡΡŒ Π»Π°Π²ΠΈΠ½ΠΎΠΉ диагностичСских сообщСний компилятора, Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… достигала Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч символов, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ€Π΅Ρ‡ΡŒ шла ΠΎ классах, функциях ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…, Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠΈΡ…ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈ всСм ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊ STL ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ я Π½Π΅ Ρ€Π΅ΡˆΠ°Π»ΡΡ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ программистам срСднСго Π·Π²Π΅Π½Π°. Π― Π½Π΅ Π±Ρ‹Π» ΡƒΠ²Π΅Ρ€Π΅Π½ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ STL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эффСктивно.

Π—Π°Ρ‚Π΅ΠΌ я Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Π½Π΅Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅. НСсмотря Π½Π° всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с пСрСносом ΠΈ сквСрноС качСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, нСсмотря Π½Π° сообщСния компилятора, напоминавшиС бСссмыслСнноС Π½Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ символов, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΌΠΎΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² всС Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с STL. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ просто экспСримСнтировали с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Π° использовали Π΅Π΅ Π² коммСрчСских вСрсиях своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ! Для мСня это Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ. Π― Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ STL, ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ элСгантной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, Π½ΠΎ любая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Ρ€Π°Π΄ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ программист Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π΅ΠΊΠ°Π» сСбя Π½Π° трудности с пСрСносом, Π½Π° ΡΠΊΠ²Π΅Ρ€Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π½Π΅Π²Ρ€Π°Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ большим, Ρ‡Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. ВсС большС ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ плохая рСализация STL Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ отсутствиС.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, я Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ситуация с STL Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒΡΡ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ компиляторы Π±ΡƒΠ΄ΡƒΡ‚ постСпСнно ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΊ трСбованиям Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π° (Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π±Ρ‹Π»ΠΎ), появится качСствСнная докумСнтация (см. список Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π½Π° с. 203), Π° диагностика компилятора станСт Π±ΠΎΠ»Π΅Π΅ Π²Ρ€Π°Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ (Π² этой области ситуация оставляСт ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ, Π½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ совСта 49 ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ с Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΎΠΉ сообщСний). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, я Ρ€Π΅ΡˆΠΈΠ» внСсти свою Π»Π΅ΠΏΡ‚Ρƒ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ STL. Π’Π°ΠΊ появилась эта ΠΊΠ½ΠΈΠ³Π° β€” 50 практичСских совСтов ΠΏΠΎ использованию STL Π² C++.

Π‘Π½Π°Ρ‡Π°Π»Π° я намСрСвался Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Π·Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ 1999 Π³. ΠΈ Π΄Π°ΠΆΠ΅ набросал Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру. Но ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ»Π°Π½Ρ‹ измСнились, я приостановил Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс ΠΏΠΎ STL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСподавался нСскольким Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ программистов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π³ΠΎΠ΄ я вСрнулся ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ» ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° основании ΠΎΠΏΡ‹Ρ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π° врСмя прСподавания. Π’ ΠΊΠ½ΠΈΠ³Π΅ я постарался ΠΎΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ практичСскиС аспСкты программирования Π² STL, особСнно Π²Π°ΠΆΠ½Ρ‹Π΅ для ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов.

Π‘ΠΊΠΎΡ‚Ρ‚ Дуглас ΠœΠ΅ΠΉΠ΅Ρ€Ρ Π‘Ρ‚Π°Ρ„Ρ„ΠΎΡ€Π΄, ΠžΡ€Π΅Π³ΠΎΠ½ ΠΠΏΡ€Π΅Π»ΡŒ 2001 Π³.

Благодарности

Π—Π° Π³ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² STL, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ курс ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ, я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π½Π΅ΠΎΡ†Π΅Π½ΠΈΠΌΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΡ‚ мноТСства людСй. Π₯ΠΎΡ‡Ρƒ особо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠœΠ°Ρ€ΠΊΠ° РодТСрса (Mark Rodgers), Π²Π΅Π»ΠΈΠΊΠΎΠ΄ΡƒΡˆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ²ΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ курса ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… написания. ΠžΡ‚ Π½Π΅Π³ΠΎ я ΡƒΠ·Π½Π°Π» ΠΎΠ± STL большС, Ρ‡Π΅ΠΌ ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ΠœΠ°Ρ€ΠΊ Ρ‚Π°ΠΊΠΆΠ΅ выполнял Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ тСхничСского Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° этой ΠΊΠ½ΠΈΠ³ΠΈ, Π° Π΅Π³ΠΎ замСчания ΠΈ дополнСния ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ практичСски вСсь ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

Π”Ρ€ΡƒΠ³ΠΈΠΌ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ источником ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Usenet; посвящСнныС языку C++, особСнно comp.lang.c++.moderated (Β«clcmΒ»), comp.std.c++ ΠΈ microsoft.public.vc.stl. Π‘Π²Ρ‹ΡˆΠ΅ дСсяти Π»Π΅Ρ‚ участники этих ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π»ΠΈ Π½Π° ΠΌΠΎΠΈ вопросы ΠΈ ставили Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ. Π― Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ сообщСству Usenet Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ этой ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΈ ΠΌΠΎΠΈΠΌΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ публикациями ΠΏΠΎ C++.

МоС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ STL Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄ влияниСм ряда ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ, самыС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… пСрСчислСны Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ½ΠΈΠ³ΠΈ. ОсобСнно ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ я ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΠ» ΠΈΠ· Ρ‚Ρ€ΡƒΠ΄Π° ДТосаттиса Β«The C++ Standard LibraryΒ» [3].

ИдСи ΠΈ наблюдСния, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит эта ΠΊΠ½ΠΈΠ³Π°, Π² основном ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ, хотя Π² Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ ΠΈ ряд ΠΌΠΎΠΈΡ… собствСнных ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΉ. Π― постарался ΠΏΠΎ возмоТности ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ источники, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Π½ΠΎ эта Π·Π°Π΄Π°Ρ‡Π° ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½Π° Π½Π° ΠΏΡ€ΠΎΠ²Π°Π», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ информация ΡΠΎΠ±ΠΈΡ€Π°Π»Π°ΡΡŒ ΠΈΠ· мноТСства источников Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ список Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»ΠΎΠ½, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠ³Ρƒ. Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² этом спискС пСрСчислСны источники, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я ΡƒΠ·Π½Π°Π²Π°Π» ΠΎ Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… идСях ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ…, Π° Π½Π΅ ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚Π΅Π»ΠΈ.

Π’ совСтС 1 Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π»ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ сСмантики, позаимствовано ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 5.11.2 Β«The C++ Standard LibraryΒ» [3]. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования typedef ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ° распрСдСлитСля памяти ΠΈΠ· совСта 2 Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠœΠ°Ρ€ΠΊΠΎΠΌ РодТСрсом. Π‘ΠΎΠ²Π΅Ρ‚ 5 Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½ ΡΡ‚Π°Ρ‚ΡŒeΠΉ Ривса (Reeves) Β«STL GotchasΒ» [17]. Π’ основу совСта 8 Π·Π°Π»ΠΎΠΆΠ΅Π½ совСт 37 ΠΊΠ½ΠΈΠ³ΠΈ Π‘Π°Ρ‚Ρ‚Π΅Ρ€Π° Β«Exceptional C++Β» [8], Π° КСвлин Π₯Π΅Π½Π½ΠΈ (Kevlin Henney) прСдоставил Π²Π°ΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ использовании ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² auto_ptr. Π’ конфСрСнциях Usenet ΠœΡΡ‚Ρ‚ ΠžΡΡ‚Π΅Ρ€Π½ (Matt Austem) прСдоставил ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования распрСдСлитСлСй памяти, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠ½ΠΎΠΉ Π² совСт 11. Π‘ΠΎΠ²Π΅Ρ‚ 12 основан Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ… сайта SGI STL [21], посвящСнных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ бСзопасности. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ подсчСтС ссылок Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС ΠΈΠ· совСта 13 ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΡ‚Π° ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π‘Π°Ρ‚Ρ‚Π΅Ρ€Π° [20]. ИдСя совСта 15 Π±Ρ‹Π»Π° подсказана ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ Ривса Β«Using Standard string in the Real World, Part 2Β» [18]. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° нСпосрСдствСнной записи Π΄Π°Π½Π½Ρ‹Ρ… Π² vector, продСмонстрированная Π² совСтС 16, Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠœΠ°Ρ€ΠΊΠΎΠΌ РодТСрсом. Π’ совСт 17 Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° информация ΠΈΠ· Usenet, Π°Π²Ρ‚ΠΎΡ€Ρ‹ β€” Π‘ΠΈΠΌΠ΅Π» Наран (Siemel Naran) ΠΈ ΠšΠ°Ρ€Π» Π‘Π°Ρ€Ρ€ΠΎΠ½ (Carl Barron). Π‘ΠΎΠ²Π΅Ρ‚ 18 Π±Ρ‹Π» позаимствован ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π‘Π°Ρ‚Ρ‚Π΅Ρ€Π° Β«When Is a Container Not a Container?Β» [12]. Для совСта 20 ΠœΠ°Ρ€ΠΊ РодТСрс ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» идСю прСобразования указатСля Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ посрСдством разымСнования, Π° Π‘ΠΊΠΎΡ‚Ρ‚ ЛСвандовски (Scott Lewandowski) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ DereferenceLess. Π‘ΠΎΠ²Π΅Ρ‚ 21 основан Π½Π° сообщСнии Π”ΡƒΠ³Π° Π₯аррисона (Doug Harrison) Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡŽ microsoft.public.vc.stl, Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΠΌΠΊΠΈ этого совСта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ равСнства, принял я сам. Π‘ΠΎΠ²Π΅Ρ‚ 22 основан Π½Π° ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π‘Π°Ρ‚Ρ‚Π΅Ρ€Π° Β«Standard Library News: sets and mapsΒ» [13]. Π‘ΠΎΠ²Π΅Ρ‚ 23 Π±Ρ‹Π» подсказан ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ ΠžΡΡ‚Π΅Ρ€Π½Π° Β«Why You Shouldn't Use set β€” and What to Use InsteadΒ» [15]; Дэвид Π‘ΠΌΠΎΠ»Π»Π±Π΅Ρ€Π³ (David Smallberg) ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π» мою Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ DataCompare. ОписаниС Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Dinkumware основано Π½Π° ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΠ»Π°ΡƒΠ³Π΅Ρ€Π° (Plauger) Β«Hash TablesΒ» [16]. ΠœΠ°Ρ€ΠΊ РодТСрс Π½Π΅ согласСн с Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ совСта 26, Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ этот совСт Π±Ρ‹Π» подсказан Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚ΠΈΠΏΠ° iterator. Π Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ совСтом 29 Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΠ»Π°ΡΡŒ дискуссиями Π² Usenet с участиСм ΠœΡΡ‚Ρ‚Π° ΠžΡΡ‚Π΅Ρ€Π½Π° ΠΈ ДТСймса ΠšΠ°Π½Ρ†Π΅ (James Kanze); Π½Π° мСня Ρ‚Π°ΠΊΠΆΠ΅ повлияла ΡΡ‚Π°Ρ‚ΡŒΡ ΠšΠ»Π°ΡƒΡΠ° ΠšΡ€Π΅Ρ„Ρ‚Π° (Klaus Kreft) ΠΈ АнТСлики Π›Π°Π½Π³Π΅Ρ€ (Angelika Langer) «А Sophisticated Implementation of User-Defined Inserters and ExtractorsΒ» [25]. Π‘ΠΎΠ²Π΅Ρ‚ 30 основан Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π° 5.4.2 ΠΊΠ½ΠΈΠ³ΠΈ ДТосаттиса Β«The C++ Standard LibraryΒ» [3]. Π’ совСтС 31 ΠœΠ°Ρ€ΠΊΠΎ Π”Π°Π»Π»Π° ГаспСрина (Marco Dalla Gasperina) ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования nth_element для вычислСния ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ‹, Π° использованиС этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для поиска ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»Π΅ΠΉ взято прямо ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 18.7.1 ΠΊΠ½ΠΈΠ³ΠΈ Бтрауструпа (Stroustrup) Β«The C++ Programming LanguageΒ». Π‘ΠΎΠ²Π΅Ρ‚ 32 Π±Ρ‹Π» Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ Ρ€Π°Π·Π΄Π΅Π»Π° 5.6.1 ΠΊΠ½ΠΈΠ³ΠΈ ДТосаттиса Β«The C++ Standard LibraryΒ». Π‘ΠΎΠ²Π΅Ρ‚ 35 появился ΠΏΠΎΠ΄ влияниСм ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠžΡΡ‚Π΅Ρ€Π½Π° Β«How to Do Case-Insensitive String ComparisonΒ» [11], Π° сообщСния ДТСймса ΠšΠ°Π½Ρ†Π΅ ΠΈ Π”ΠΆΠΎΠ½Π° ΠŸΠΎΡ‚Ρ‚Π΅Ρ€Π° (John Potter) ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² сути происходящСго. РСализация copy_if, привСдСнная Π² совСтС 36, позаимствована ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 18.6.1 ΠΊΠ½ΠΈΠ³ΠΈ Бтрауструпа Β«The C++ Programming LanguageΒ» [7]. Π’ основу совСта 39 Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ДТосаттиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ упомянул ΠΎ Β«ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°Ρ… с состояниСм» Π² своСй ΠΊΠ½ΠΈΠ³Π΅ Β«The C++ Standard LibraryΒ» [3] ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«Predicates vs. Function ObjectsΒ» [14]. Π’ своСй ΠΊΠ½ΠΈΠ³Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π²Π΄ΡƒΡŽ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, хотя Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «чистая функция» ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ½Π΅. Π’ совСтС 41 МeΡ‚Ρ‚ ΠžΡΡ‚Π΅Ρ€Π½ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» ΠΌΠΎΠΈ подозрСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ происхоТдСния ΠΈΠΌΠ΅Π½ mem_fun ΠΈ mem_fun_ref. Π‘ΠΎΠ²Π΅Ρ‚ 42 Π±Π΅Ρ€Π΅Ρ‚ своС Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΠ· Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠΉ ΠΌΠ½Π΅ ΠœΠ°Ρ€ΠΊΠΎΠΌ РодТСрсом, ΠΊΠΎΠ³Π΄Π° я Π½Π°Ρ€ΡƒΡˆΠΈΠ» Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ этого совСта. ΠœΠ°Ρ€ΠΊΡƒ РодТСрсу Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² совСтС 44 Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ внСшнСм поискС Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… map ΠΈ multimap Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠ°Ρ€Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ поискС функциями ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° учитываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (ΠΊΠ»ΡŽΡ‡). Π’ совСтС 45 использована информация ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… участников clem, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π”ΠΆΠΎΠ½ ΠŸΠΎΡ‚Ρ‚Π΅Ρ€, ΠœΠ°Ρ€ΡΠΈΠ½ ΠšΠ°ΡΠΏΠ΅Ρ€ΡΠΊΠΈ (Marcin Kasperski), Pete Becker (ΠŸΠΈΡ‚ Π‘Π΅ΠΊΠ΅Ρ€), ДСннис Π™Π΅Π»ΡŒ (Dennis Yelle) ΠΈ Дэвид АбрахамС (David Abrahams). Дэвид Π‘ΠΌΠΎΠ»Π»Π±Π΅Ρ€Π³ подсказал ΠΌΠ½Π΅ идСю примСнСния equal_range для поиска Π½Π° Π±Π°Π·Π΅ эквивалСнтности ΠΈ подсчСта Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² сортированных ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. АндрСй АлСксандрСску (Andrei Alexandrescu) ΠΏΠΎΠΌΠΎΠ³ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² условиях возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ «ссылки Π½Π° ссылку», ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠΉ Π² совСтС 50; ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ основан Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠœΠ°Ρ€ΠΊΠ° РодТСрса, взятом с сайта Boost [22].