void using k_and_r_style() {
// ...
}
void putting_each_brace_on_its_own_line()
{
// ...
}
void or_putting_each_brace_on_its_own_line_indented()
{
// ...
}
ΠΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΡΠΈΡ ΡΡΠΈΠ»Π΅ΠΉ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΠΊ, ΡΡΠΎ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΡΡΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΈ ΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»Ρ, ΠΏΡΠΈΠ½ΡΡΠΎΠΌΡ Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. Π Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΏΡΠΈΠ·Π²Π°Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΡΠ°Π²Π°ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ,
ΠΡΠΈΠΌΠ΅Ρ 2. ΠΡΠΎΠ±Π΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, [BoostLRG]) Π½Π° ΡΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π²Π°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ, Π° ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΡΡΡΡΠΏΡ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»Ρ ΠΈΠ»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊΠΈ. Π Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ. ΠΠ°ΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΠ°ΡΡ ΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΡΠ»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±ΡΠ΄ΡΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ ΠΊΠΎΠ΄ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° (ΡΠΌ. ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ 6). ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ Π² ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π°
ΠΡΠΈΠΌΠ΅Ρ 3. ΠΠ΅Π½Π³Π΅ΡΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ. ΠΠ°ΠΏΠΈΡΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·Ρ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π‘); Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Ρ ΠΎΡΡ ΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ (ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ) Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ; ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π² ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ°Π½Π΄Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘++ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π΅Π½Π³Π΅ΡΡΠΊΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π΅Ρ Π·Π°ΠΏΡΠ΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ 4. ΠΠ΄ΠΈΠ½ Π²Ρ ΠΎΠ΄, ΠΎΠ΄ΠΈΠ½ Π²ΡΡ ΠΎΠ΄ (Single entry, single exit β "SESE"). ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π»Π° Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ΠΈΠ½ Π²ΡΡ ΠΎΠ΄, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ return. Π’Π°ΠΊΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ Π² ΡΠ·ΡΠΊΠ°Ρ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ²Π½ΡΡ Π²ΡΡ ΠΎΠ΄ΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 5, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ
Π‘ΡΡΠ»ΠΊΠΈ[BoostLRG] β’ [Brooks95] Β§12 β’ [Constantine95] Β§29 β’ [Keffer95] p. 1 β’ [Kernighan99] Β§1.1, Β§1.3, Β§1.6-7 β’ [Lakos96] Β§1.4.1, Β§2.7 β’ [McConnell93] Β§9, Β§19 β’ [Stroustrup94] Β§4.2-3 β’ [Stroustrup00] Β§4.9.3, Β§6.4, Β§7.8, Β§Π‘.1 [Sutter00] Β§6.1, Β§20 [SuttHysl01]
1. ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π±Π΅Π· Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ ΠΏΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π²ΡΠ΅ Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ ΠΈΡ ΠΏΡΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π° Π½Π΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ β Π²Π°Ρ Π΄ΡΡΠ³. ΠΡΠ»ΠΈ ΠΎΠ½ Π²ΡΠ΄Π°Π» ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π·Π°ΡΠ°ΡΡΡΡ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
Π£ΡΠΏΠ΅ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΌΠΎΠ»ΡΠ° (Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ). ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, Π²Ρ Π±ΡΡΡΡΠΎ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°Π΅ΡΠ΅ ΠΏΡΠΈΠ²ΡΡΠΊΡ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 2).
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°.
ΠΠ΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° β Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ. ΠΠ΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ Π² ΠΌΡΠ³ΠΊΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ Π»Π΅Π³ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠΊΡΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
ΠΡΠΈΠΌΠ΅ΡΡΠΡΠΈΠΌΠ΅Ρ 1. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΌΠ΅Π»ΠΊΠΎΠΌΡ) ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ "Π·Π°Π²Π΅ΡΠ½ΠΈΡΠ΅" ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #include ΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. Π ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π° Π½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ (ΡΡΡΠΈΡΠ΅ β ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π²Π°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ):
// Π€Π°ΠΉΠ»: myproj/my_lambda.h - "ΠΎΠ±Π΅ΡΡΠΊΠ°" Π΄Π»Ρ lambda.hpp ΠΈΠ·
// Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Boost. ΠΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΈ Π½Π΅
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ lambda.hpp Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ. Boost.Lambda
// ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΎ
// Π±Π΅Π·Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΌ Π΄ΠΎΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π°
// ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ
// Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΌΡ ΡΠ΄Π°Π»ΠΈΠΌ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
// ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #pragma, Π½ΠΎ ΡΠ°ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ
// ΡΠ°ΠΉΠ» ΠΎΡΡΠ°Π½Π΅ΡΡΡ.
//
#pragma warning(push) // ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ
// Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
#pragma warning(disable:4512)
#pragma warning(disable:4180)
#include <boost/lambda/lambda.hpp>
#pragma warning(pop) // ΠΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ
// Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅Ρ 2. "ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ". Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π² ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ "Π·Π°Π³Π»ΡΡΠΊΠ°" Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΠ°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΡΠ°ΡΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ). ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΠΌΡ:
// ... Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π½Π΅
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ β¦
// ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: "Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ 'localityHint'"
pointer allocate(size_type numObjects,
const void *localityHint = 0) {
return static_cast<pointer>(
mallocShared(numObjects * sizeof(T)));
}
// Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ: ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΡΡΠ°Π½Π΅Π½ΠΎ
pointer allocate(size_type numObjects,
const void* /* localityHint */ = 0) {
return static_cast<pointer>(
mallocShared(numObjects * sizeof(T)));
}
ΠΡΠΈΠΌΠ΅Ρ 3. "ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ". Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΠΊ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΠ΅ "Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° Π΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ", ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 13). ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΠΎΠ»ΡΠ°ΡΡ, Π²ΠΊΠ»ΡΡΠΈΠ² "Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅" ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΡΠ°ΠΊΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ):
// ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: "ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ 'lock' ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, Π½ΠΎ Π½Π΅
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ"
void Fun() {
Lock lock;
// ...
}
// Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ: ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ
void Fun() {
Lock lock;
lock;
// ...
}
ΠΡΠΈΠΌΠ΅Ρ 4. "ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π½Π΅ Π±ΡΠ΄ΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ". ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 19).
ΠΡΠΈΠΌΠ΅Ρ 5. "ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ return". ΠΠ½ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΡΠ΅Π±ΡΡΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ return Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ throw, Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ return). Π’Π°ΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ switch, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ Π²ΡΠ±ΠΎΡΠ° default, ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΡΠΌ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΡΠ±ΠΎΡ default, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ assert(false) (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 68 ΠΈ 90):
// ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ "return"
int Fun(Color C) {
switch(C) {
case Red: return 2;
case Green: return 0;
case Blue:
case Black: return 1;
}
}
// ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ: ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΡΡΠ°Π½Π΅Π½ΠΎ
int Fun(Color C) {
switch(C) {
case Red: return 2;
case Green: return 0;
case Blue:
case Black: return 1;
// ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ !"string" ΡΠ°Π²Π½ΠΎ false:
default: assert(!"should never get here!");
return -1;
}
}
ΠΡΠΈΠΌΠ΅Ρ 6. "ΠΠ΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ signed/unsigned". ΠΠ±ΡΡΠ½ΠΎ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΠΈΡΠ»Π° Ρ ΡΠ°Π·Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ Π·Π½Π°ΠΊΠΎΠ²ΠΎΡΡΠΈ. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΈΠΏΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. Π ΠΊΡΠ°ΠΉΠ½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ²Π½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠΎΠ². (ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π² ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ, ΡΠ°ΠΊ ΡΡΠΎ Π»ΡΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.)