ืืืื ืืื ืื ืึธื ืืืื ืคืื ืื ืฉืคึผืื ืืืจ ืืึธืื ืึทื ืขืก ืืื C ++ ืงืึธื ืืึทื ืืืื ื ืืืืฃ ืื ืืืึทื ื, ืืขืืึธืื ืืืจื ืื ืกืืฃ ืขืก ืืื ืืขืืื ืื ืฆื ืืจืืืขื ืืืจ ืืื ืื ืคึฟืืก.
Bjarne Stroustrup
ืคืื 31 ืืงืืืืขืจ ืืื 1 ื ืืืืขืืืขืจ, ืื C++ ืจืืกืืึทื ื ืคึผืืืขืจ ืงืึธื ืคึฟืขืจืขื ืฅ ืืื ืืขืืืืื ืืื ืกื ืคืขืืขืจืืืจื - ืืืื ืขืจ ืคืื ืื ืืจืืืก-ืืืึธื ืคึผืจืึธืืจืึทืืืื ื ืงืึทื ืคืจืึทื ืกืึทื ืืื ืจืืกืืึทื ื, ืึธืจืืึทื ืืืืจื ืืืจื JUG Ru Group. ืคืืจืืขืื ืกืคึผืืงืขืจื ืึทืจืืึทื ื ืขืืขื ืืืืืืืืขืจ ืคืื ืื C ++ ืกืืึทื ืืึทืจืืก ืงืึทืืืื, CppCon ืกืคึผืืงืขืจื, ืึธืืจืืื ืืื ืืืืจืื, ืืื ืืึทืื ืืขืจืก ืคืื ืคึผืจืึทืืืฉืขืงืก ืึทืืึท ืืื LLVM, libc ++ ืืื Boost. ืื ืงืึธื ืคึฟืขืจืขื ืฅ ืืื ืึทืืืขื ืฆื ืืงืกืคึผืืจืืึทื ืกื C ++ ืืขืืืขืืึธืคึผืขืจืก ืืืึธืก ืืืืื ืฆื ืืืคึผืึทื ืืืืขืจ ืขืงืกืคึผืขืจืืื ืืื ืืืขืงืกื ืืงืกืคึผืืจืืึทื ืกืื ืืื ืืขืื ืงืึธืืื ืืงืึทืฆืืข. ืกืืืืขื ืื, ืืจืึทืืืฉืึทืืืึทื ืกืืืืขื ืื ืืื ืืื ืืืืขืจืกืืืขื ืืขืจืขืจืก ืืขื ืขื ืฆืืืขืฉืืขืื ืืื ืืืืขืจ ืฉืืื ืืืกืงืึทืื ืฅ.
ืื ืืึธืกืงืืืขืจ ืืืืกืืึทืืข ืคึฟืื ืืขืจ ืงืึธื ืคึฟืขืจืขื ืฅ ืืืขื ืืฒึทื ืคึฟืึทืจืึทื ืฆื ืืึทืืืื ืฉืืื ืืื ืืคืจืื ืงืืืขื ืืืงื ืืึธืจ, ืึธืืขืจ ืืขืจืืืฒึทื ืืืขืื ืืื ืืืขืจืข ืชึผืืืืืื ืืขืจืฆืืืื ืืืึธืก ืคึฟืึทืจ ืืื ืืขืจืขืกืึทื ืืข ืืึทืื ืืื ืืึธืื ืืื ืืขืืขืจื ื ืืฒึท ืืขืจ ืืขืฆืืขืจ ืืขืฉืขืขื ืืฉ.
ืคืึธืืึธ ืคืื
ืืืขืื ืืื ืื
ืฆืืืื ืกืืืืขื ืื ืคืื ืืขืจ ื ืึทืฆืืึธื ืึทืืขืจ ืคืึธืจืฉืื ื ืืื ืืืืขืจืกืืืขื ืืขืืขืจ ืฉืืืข ืคืื โโืขืงืึธื ืึธืืืง - ืกื ืคืขืืขืจืืืจื ืืขืืจืืขื ืืืืฃ ืืขื ืคึผืึธืกืื:
- ืืืืึท ืืืึทืกืืืขื ืงืึธ ืืื ืึท 4th ืืึธืจ ืื ืืขืจืืจืึทืืืึทืืข ืชึผืืืื ืืขืืขืจื ื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื ืืื ืึท ืืืื ืคืื ืื ืึทืคึผืคึผืืืขื ืืึทืืืขืืึทืืืงืก ืืื ืงืึธืืคึผืืืืขืจ ืืืืกื ืฉืึทืคึฟื ืคึผืจืึธืืจืึทื. ืืื ืืื ืืขืืืขื ืืึทืงืึทื ื ืืื ืื C ++ ืฉืคึผืจืึทื ืืื ืืืื ืขืจืฉืืขืจ ืืึธืจ ืืื ืืื ืืืืขืจืกืืืขื, ืืื ืืขืจื ืึธื ืคืืจืืื ื ืืขืจืคืึทืจืื ื ืืื ืืื ืืืจื ืื ืืขืจื ืฉืืคึผืก ืืื ืื ืืื ืืืกืืจืืข. ืืืึทื ืืืึทืื ืฉืึทืคื ืคึฟืึทืจ ืคึผืจืึธืืจืึทืืืื ื ืฉืคืจืึทืื ืืื ืึทืืืขืืืื ืืื ืคืึทื ืืงืฉืึทื ืึทื ืคึผืจืึธืืจืึทืืืื ื ืืื ืืึทืืื ืืขืจ, ืืึธืื ืืืื ืฆืืืื ืืืืฃ ืื ืกืขืืขืงืฆืืข ืคืื โโืจืืคึผืึธืจืฅ ืืืืฃ ืืขืจ ืืืฆืื ื.
- ืืึทื ืืึท ืกืืืจื ืึธืื ืืื ืึท 1-ืืึธืจ ืชึผืืืื ืคืื ืื ืืึทืกืืขืจื ืคึผืจืึธืืจืึทื "ืคึผืจืึธืืจืึทืืืื ื ืืื ืืึทืืึท ืึทื ืึทืืืกืืก". ืืื ืืื ื ืึธื ืืื ืฉืืืข, ืืื ืืขืฉืจืืื ืึธืืืืคึผืืึทื ืคืจืืืืขืืขื ืืื C++, ืืื ืืขืืึธืื ืขืก ืืื ืขืคืขืก ืืขืืจืืคื ืึทื ืื ืฉืคึผืจืึทื ืงืขืกืืืืขืจ ืืขืงืืืขื ืึทืจืืืฃ ืืื ืืืืืื ืืงืจืืื ืึทืงืืืืืืืขืื ืืื ืืืืขื ืืฉืึทืืืึทืื ืืขืืืืจื ืื ืืืืคึผื ืึทืจืืขื ืฉืคึผืจืึทื. ืืื ืืึทืฉืืึธืกื ืฆื ืึธื ืืืื ื ืขืืขื ืืื ืืขืจ ืืืฆืื ื ืฆื ืคึฟืึทืจืืขืกืขืจื ืืืื ืืืืกื ืืื ืืืื ืืขืจื ืขื ืืืขืื ื ืืึทืข ืึทืคึผืขืจืืื ืึทืืื.
ืืื ืื ื ืืืืขืืขืจ, ืื ืคืืืืงืืึทื ืคืืจืขืจืฉืึทืคื ืึธืคื ืฉืึทืจืขืก ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืืืืื ืืงืจืืื ืืขืฉืขืขื ืืฉื ืฉืืึทืืืช ืฆื ืืื ืืืขืจ ืกืคึผืขืฆืืึทืืืืขื. ืืื ืกืขืคืืขืืืขืจ ืืืจ ืืขืืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื C ++ ืจืืกืืึทื ื ืืื ืืึทืฉืืึธืกื ืฆื ืคืึทืจืฉืจืืึทืื ืืื ืฆืืืขืจืขืจืก. ืืึธืก ืืื ืืื ืืืขืจ ืขืจืฉืืขืจ ืืขืจืคืึทืจืื ื ืคืื ืึธื ืืืื ื ืขืืขื ืืื ืึทืืึท ืงืึทื ืคืจืึทื ืกืึทื.
ืงืึธื ืคึฟืขืจืขื ืฅ ืกืืจืืงืืืจ
-
ืจืืคึผืึธืจืฅ
ืืื ืืืืฃ ืคืื ืฆืืืื ืืขื, ืขืงืกืคึผืขืจืฅ ืืืืขื ืขื 30 ืจืืคึผืึธืจืฅ, ืงืึทืืืขืจืื ื ืคืืืข ืืืืก ืืขืืขืก: ืื ืืืฉืื ืืึทืก ื ืืฆื ืคืื ืฉืคึผืจืึทื ืคึฟืขืึดืงืืืื ืฆื ืกืึธืืืืข ืืขืืืขื ืื ืคึผืจืึธืืืขืืก, ืึทืคึผืงืึทืืื ื ืฉืคึผืจืึทื ืืขืจืืืึทื ืืืงืื ืืขื ืืื ืคึฟืึทืจืืื ืืื ื ืืื ืื ื ืืึทืข ื ืึธืจืืึทื, ืงืึทืืคึผืจืึทืืืืืื ืืื C ++ ืคึผืืึทื ืืื ืคึผืจืืงืึธืฉืึทื ื ืืืขื ืืจืืขืื ืืื ืืืืขืจ ืงืึทื ืกืึทืงืืืขื ืกืึทื, ืืืืฉืคืืื ืคืื ืืฉืืงืึทืืืข ืคึผืจืืืขืงื ืึทืจืงืึทืืขืงืืฉืขืจ, ืืื ืืขืืื ื ืืื ืขืืืขืืข ืืขืืึทืืืก ืืื ืืขืจ ืื ืงืึทืคึผืืขืจ ืคืื ืื ืฉืคึผืจืึทื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ. ืืืฒืืฆืฒืืืง ืืฒึทื ืขื ืคึฟืึธืจืืขืงืืืขื ืืจืฒึท ืคึฟืึธืจืฉืืขืืื ืืขื, ืืขืจืกืื ืก ืฆืฐืฒ ืืฑืฃ ืจืืกืืฉ ืืื ืืฒื ืข ืืฑืฃ ืขื ืืืืฉ.
-
ืืืกืงืืกืืข ืืึธื ืขืก
ื ื ื ืืข ืจ ืจืขืืข , ืืขื ืข ื ืื ืข ืืืืืขืคืจืขืื ืข ืคืจืื ื ืื ื ืืืืคืืจืขื ืืืงื ืข ืืืกืงืืกืืขืก , ืืจืืืขืจืืขืคืืจ ื ืืขืฐืืจ ื ืืื ืฃ ืกืคืขืฆืืข ื ืืืฉืืืืืข ืจ ืืขืืื ื ืคื ืจ ืงืืืื ืืงืืฆืืข ื ืื ื ื ื ืจืขืื ืขืจ , ืืืืกืืขืฉืืื ืข ื ืื ื ืืืจืงึพืืจืขืืืขื . ื ืืืืข ืืืขื ืฆื ืคืืจืืืืื ืื ืืจืขืื ืฆืืืืฉื ืจืขืืขืก ืืื ืึท ืึธื ืืขื ืขื ืฉืืืขืก.
-
ืืืืฅ ืืึทืืงืก ืืื ืื ืคืึธืจืืึทื ืืืกืงืืกืืขืก
ืืืื ืืืจ ืืืืื ืืขืื ืึท ืงืืจืฅ ืืึทืจืืื, ืืืจ ืงืขื ื ืืื ืืืื ืฉืจืืืื ืืืืฃ ืื ืืืืืืขืืึธืึทืจื ืคึฟืึทืจ ืื ืึธืืื ื ืืืืฅ ืจืขืื ืืื ืืึทืงืืืขื ืคืื ืฃ ืืื ืื ืฆืืื ืฆื ืจืขืื ืืืขืื ืขืคึผืขืก ืืืืฃ ืืขืจ ืงืึธื ืคึฟืขืจืขื ืฅ ืืขืืข. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืึท ืฉื ืขื ืืงืืื ืฆื ืกืึทื ืืืืืขืจืก ืคึฟืึทืจ C ++ (ืคึฟืึทืจ ืขืืืขืืข ืขืก ืืื ืืขืืืขื ื ืืึท) ืึธืืขืจ ืึท ืืขืจืฆืืืืื ื ืืืขืื ืึท ืืฉืืง ืืื ืกืื ืืก ืืืืึทืืืข ืืืจ ืืืึธืก ืงืขื ืขื ื ืึธืจ ืืืื ืืขืืขืจื, ืึธืืขืจ ื ืืฉื ืืขืืขื.
ืื ืื ืืขืจ ืคึฟืึธืจืืึทื ืืื ืื ืืึทืคืืืข ืืืกืงืืกืืข "ืืื ืึท ืืึทืจืฅ ืฆื ืืึทืจืฅ ืงืึทืืืื." ืืืืฃ ืืขืจ ืืื ืข ืืขื ืขื ืขืืืขืืข ืืืืืืืืขืจ ืคืื ืื ืกืืึทื ืืขืจืืืืืืฉืึทื ืงืืืืืขื, ืืืืฃ ืื ืคึผืจืึทืืืฉืขืงืืขืจ ืืื ืึท ืงืึทืืื (ืึธืคืืฆืืขื - ืฆื ืฉืึทืคึฟื ืึท ืึธืคื ืืึทืจืฆืืง ืึทืืืึธืกืคืขืจ, ืึธืืขืจ ืื ืกืืื "ืืืืึทื ืึทืืฅ ืืื ืืืืฃ ืคืืืขืจ" ืืืื ื ืคืึทื ืืขืจ), ืฉืืืืช ืืืขืื ืื ื ืึธืจืืึทื ืืื ืื ืึทืืืขืืืื ืข ืืขืืื ื ืคืื C ++ , ืึธื ืืขืึทืืขื ืืขืื ืืฉ ืืืกืงืืกืืขืก ืืื ืืึธืืืืืึทืจืก. ืข ืก ืื ื ืื ื ืืจืืืกืืขืฐืืื , ื ื ืืื ื ืื ื ืืข ืจ ืงืืืืืข ื ืื ืืืืื ื ืืขืืขืืืงืข ืจ ืืขื ืืฉ ื ืฐื ืก ืื ื ื ืืฉ ื ืืฒ ื ืืื ืืื ืฆ ื ืืืืขืจ ืข ืคื ื ืขืคืข ื ืืืข ืจ ืืข ื ืฐืฒืก ื ืขืคืข ื ื ืืฉื .
ืคึฟืึทืจ ืคืึทื ืก ืคืื ืืึธืืืืืึทืจืก, ืื ืืจืื ืืขืฉืขืขื ืืฉ ืคืืจืืืืื ืืืืฃ ืืขื ืคืึทื - ืื BOF ืกืขืกืืข "ืืืื ืืืก C ++". ืืืจ ื ืขืืขื ืึท Go ืืืืืึธืืขืจ, ืึท C ++ ืืืืืึธืืขืจ, ืืืืืขืจ ืื ืึธื ืืืื ืคืื ืื ืกืขืกืืข, ืืื ืฆืืืึทืืขื ืฆืืืจืืืื 100500 ืกืืืืื ืืืืฃ ืึท ืืขืืข (ืืื ืคึผืจืึธืืืขืืก ืืื ืคึผืึทืงืืืืฉืื ืืื C ++ ืึธืืขืจ ืื ืคืขืื ืคืื ืืืฉืึทื ืขืจืืงืก ืืื Go), ืืื ืืขืจื ืึธื ืืื ืืึธืื ืึท ืืขืืขืืืง ืืืกืงืืกืืข ืฆืืืืฉื ืืื ืืื ืืื ืืขื ืขืืื, ืืื ืืขืจ ืขืืื ืคืจืืืืจื ืฆื ืคืืจืฉืืืื ืฆืืืื ืฉืืื ืืคืื ืงืื ืืืืฃ ืืืื ืืื. ืืืื ืึท ืืึธืืืืืึทืจ ืกืืึทืจืฅ ืืืืก ืคืื ืงืึธื ืืขืงืกื, ืืขืจ ืืึธืืขืจืึทืืึธืจ ืื ืขืจืืืื ืืื ืืืืืืืืงื ืื ืคึผืึทืจืืืขืก. ืืขื ืคึฟืึธืจืืึทื ืืื ืึทืืืงืืืื: ืขืืืขืืข ืฉืขื ื ืึธื ืื ืึธื ืืืื, ืืืืื ืืึทืื ืคืื ืื ืกืืืืื ืืขื ืขื ืืขืขื ืืืงื. ืืขืจ ืกืืฃ ืืื ืืขืืืื ืฉืืืจืง ืคืืจืฉื ืขืืขืจื.
-
ืคึผืึทืจืื ืขืจ ืฉืืืื
ืื ืคึผืึทืจืื ืขืจืก ืคึฟืื ืืขืจ ืงืึธื ืคึฟืขืจืขื ืฅ ืืขื ืขื ืืขืืืขื ืจืขืคึผืจืืืขื ืืื ืืื ืื ืืึทืื - ืืื ืื ืกืืึทื ืื ืืึธืื ืืื ืืขืจืขืื ืืืขืื ืื ืืืฆืืืงืข ืคึผืจืึธืืขืงืื, ืืขืคึฟืื ื ืื ืืขืจื ืฉืืคึผืก ืืื ืืึทืฉืขืคืืืงืื ื, ืืืจืืืขืคืืจื ืงืืืืืขืก ืืื ืงืืืื ืข ืคืึทืจืืขืกืืื ืืขื, ืืื ืืืื ืืืืกืืขืืึธืคื ืฉืืื ืข ืคึผืจืืืื. ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืึทื, ืขืืืขืืข ืงืึธืืคึผืึทื ืืขืก ืืคืืื ืืขืคึฟืื ื ืฆื ืืืื ืืืจื ืื ืขืจืฉื ืกืืึทืืขืก ืคืื ืื ืืขืจืืืืื, ืืืึธืก ืงืขื ืืืื ื ืืฆืืง ืคึฟืึทืจ ืื ืืืืก ืืขื ืขื ืืขืงืืืขื ื ืื ืืืืื ืฆื ืืขืจื ืฆื ืจืืคึผืึธืจืฅ.
ืืขืื ืืฉ ืืขืืึทืืืก ืคืื ืื ืจืืคึผืึธืจืฅ
ืื ืจ ืืื ื ืื ื ืฆืืืขืืขืจ ื ืืืจืืื ื ืืฒื ืข ืืข ื . ืฆื ืืึธื ืืื ืฉืืืขืจ ืืขืืืขื ืืืืกืฆืืงืืืืื ืืืื ืืึทืจืืื ืคึฟืื ืื ืคึผืึทืจืึทืืขืื - ืืืจ ืืึธืื ืืกืืื ืืขืืืขื ืืื ืฆืืฆืืืืืื ืืื ืืืืกืืืืฉื ืื ืืืืกื ืืืึธืก ืืขื ืืึธื ืืขืืืืื ืขื ืืื ืื ืืจืขืื. ืืื ืืคืืื ืึทืืื, ืขืก ืืืื ื ืึทื ืคืื ืืื ืืื ืงืก ืืืืก. ืืึธ ืืืจ ืืืึธืื ืืื ืฆื ืจืขืื ืืืขืื ืืขื ืืื ืืึทืื ืคืื ืขืืืขืืข ืคืื โโืื ืจืืคึผืึธืจืฅ ืืืึธืก ืืืจ ืืขืคืื ืขื ืจืืึฟ ืืฉืืงืึทืืืข
ืืงืกืขืคึผืฉืึทื ื ืืื C ++ ืืืจื ืื ืคึผืจืืืืข ืคืื โโืงืึทืืคึผืืืืขืจ ืึธืคึผืืืืืืึทืืืึธื ืก, ืจืืืืขืจ ืจืืกืืึทืขืื
ืจืืง ืคืื
ืืื ืืขืจ ืืืื ืกืึทืืืืฉืขืกืฅ, ืจืึธืืึทื ืืขืงืืงื ืืืืฃ ืืจืืขืื ืืื ืืืืกื ืขืืขื ื ืืฆื LLVM ืืื ืึท ืืืึทืฉืคึผืื. ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืคึฟืึทืจ ืืขื ืข ืืืึธืก ืืึธื ื ืื ื ืืฆื Clang ืืื ืืืืขืจ ืึทืจืืขื, ืืขืจ ืืึทืจืืื ืงืขื ื ืึธื ืืขืื ืึท ืืขืืึทื ืง ืคืื ืืื ืื ืงืึธื ืงืขื ืืืื ืึธืคึผืืืืืืขื. ืืึธืก ืืื ืึทืืื ืืืืึทื ืื ืืขืืืขืืึธืคึผืขืจืก ืคืื ืงืึธืืคึผืืืขืจืก ืืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ื ืึธืจืืึทื ืืืืืจืขืจืื ืืืขืจืืขืื ืืื ืืขืืขืจ ืื ืืขืจืข ืืื ืคืืืข ืืฆืืื ืกืึทืืืฉืึทื ื ืงืขื ืขื ืฆืื ืืืคืคืึทืื.
ืึทืืื, ืฆื ืฉืขืคึผื ืึท ืืืกื ืขื, ืืืจ ืืึทืจืคึฟื ืฆื ืืึธื ืึท ืคึผืืึทืฅ ืคืื ืืื ืื: ืจืืคื ืื ืืึทื ืืืื ื ืงืึธื (ืืืื ืขืก ืืื) ืึธืืขืจ ืคืจืื ืจืขืกืืจืกื ืืื ืื ืงืจืึทื ื ืืืจืื ืืื ืืืืจืื ืื ืึธื ืืืืื ืืขืืขืจ. ืึทืืข ืืขื ืคืืจื ืฆื ืื ืคืึทืงื ืึทื ืืขืจ ืงืึทืืคึผืืืืขืจ ืืืกืืฃ ื ืึธื ืื ืกืืจืึทืงืฉืึทื ื ืคึฟืึทืจ ืจืืคื ืืืึธืก ืคึผืึทืืขื ืืฉืึทืื ืืืึทืจืคื ืืืืกื ืขืืขื. ืืขืจืืืขืจ, ืืืื ืื ืืืกื ืขื ืืื ื ืืฉื ืืึทืงืข ืืืืคืฉืืืื, ืื ืคึผืจืึธืืจืึทื ืืืขื ื ืึธื ืืืจืืคืืจื ืืื ืืืืืง ืึทืงืฉืึทื ื. ืืื ืกืืจ ืฆื ืขืคืขืก ืจืขืืืฆืืจื ืึธืืืืขืจืืขื, LLVM ืืื ืขืืืขืืข ืืืืจืืกืืืงืก ืคึฟืึทืจ ืืืืขืจืืึทื ืื ื ืกืืืืึทืืืึธื ืก ืืื ืืืกื ืขื ืืึทื ืืืื ื ืงืึธื ืืึทืจืฃ ื ืื ืืืื ืฆืืืขืืขืื ืึธืืขืจ ืื ื ืืืขืจ ืคืื "ืขืงืกืืจืข" ืื ืกืืจืึทืงืฉืึทื ื ืงืขื ืขื ืืืื ืจืืืืกื.
ืืขืจ ืจืขืื ืขืจ ืืื ืืขืจืืืื ืืจืื ื ืืืฅ ืคืื ืืื ืืื ืืืืืื ืืืืืข ืกืืืืืฆืืขืก ืืืื ืืื ืืขืืคื ืคืืจืฉื ืขืืขืจื ืื ืืืจืืคืืจืื ื ืคืื ืื ืคืจืืืจืื, ืืื ืื ืืืื ืื ืืขืืึธืื ืืขื ืขื ื ืืฉื ืึธื ืืืขื ืืืขื.
ืืืื, ืจืืืืขืจ ืจืืกืืึทืขืื ืคืืจื ืกืืืืขื ืื ืฆื ืื ืืกืงื ื ืึทื ืงืึธื ืืื ืืืกื ืขื ืืึทื ืืืื ื ืงืขื ืขื ื ืื ืฉืืขื ืืืง ืืืื ืขืงืกืึทืงืืืืึทื ืืื ื ืื ืึธืืืืขืจืืขื, ืืื ืืื ืื ืคืืืืขื ืืข ืขืฆื:
- ืืืขื ืืขืืืขืืึธืคึผืื ื ืืืืืจืขืจืื, ืขืก ืืื ืืืขืจื ืฆื ืคืึทืจืืึธืื ืืืืกื ืขืืขื ืืื ืคึผืจืื ืฆืืคึผ;
- ืืืื ืขืก ืืขื ืขื ื ืึธื ื ืืืืืง ืืืืกื ืขืืขื, ืืืขื ืืขืืืขื, ืขืก ืืื ืืืขืจื ืฆื ืืืืื ืงืืื ืืืฅ (ืืื ืงืึธื ืกื) ืืึธืืืคืืขืจืก ืืืืขืืื ืึทืืื ืึทื ืืขืจ ืงืึทืืคึผืืืืขืจ ืงืขื ืขื ืึทืคึผืืึทืืืื ืืื ืคืื ืืื ืืขืืืขื.
ืืื ืึทืืืขืืืื, ืืขืจ ืจืขืื ืขืจ ืืืฉืืขืืืงื ืื ืืืื ืื ื ืึทื ืืืืกื ืขืืขื ืืขื ืขื ืืขืกืืขืจ ืืขื ืืฆื ืฆื ืึท ืืื ืืืื ืึธืืขืจ ืคืืจืืืื ืืึธืจ.
ืื ืืขืืืื ื ืกืืืืื ืืขื ืขื ืื ืืืฆื ืืื ืื ืคืืืืขื ืืข ืืื ืง:
ืืขื ืขืจืึทืืึธืจืก, ืงืึธืจืึทืืืื ืขืก ืืื ืื ืืขืจืข ืืืกืงืืื ืคืื ืืึทืจื ืึทื ืจืึธืืื, ืขืื ืฉืืื
ืจืืง ืคืื
ืืืื ืขืจ ืคืื ืื ืคืืืข ืจืืคึผืึธืจืฅ ืืื ืืขื ืืืฆืื ื ืืขืืึทืงืืืืึทื ืฆื ืื ืึธืืืืืืฉืึทื ื ืืื C ++ 20 ืืื ืืขืืืขื ืืขืืขืจืึทืืึทื ื ืื ืืืืื ืคึฟืึทืจ ืืืื ืคืึทืจืืืง ืคึผืจืขืืขื ืืืจืื ื, ืึธืืขืจ ืืืื ืคึฟืึทืจ ืืืื ืงืืึธืจ ืืขืืืืืืึทืฆืืข ืคืื โโืืืืืกืืื ื ืคึผืจืึธืืืขืืก ืืื ืื ืืึทืืืื ื ืคึผืจืึทืกืขืกืื ื ืืึธืืืง (ืคึฟืึทืจ ืฉืืืืฃ, ืงืึทืืืืึทืงืงืก).
ืขืื ืฉืืื ืืืืืืืฅ ืื ืคืืืืขื ืืข: ืื ืืืฆื ืื ืืืฆื ืืขืืืึธืืก ืืืื ืืืจื ืื ืืื ืฆืข ืืึทืืืื ื ืืื ืืึธื ื ืื ืฆืืฉืืขืื ืึทืงืกืขืก ืฆื ืขืืืขืืข ืื ืขืจืืขื ืื ืืขืจืืืืืื ืฉืืึทื (ืึธืืขืจ ืืื ืืึธื ืืื ืคืึทื ืคืื ืงืึทืืืืึทืงืงืก, ืึธืืขืจ ืืื ืึท ืืจืืืก ื ืืืขืจ ืคืื ืคึผืจืืงืจืข ืืืึทื ืืคืขืงืฅ, ืึทืืึท ืืื Callback Hell) . ืขืก ืืืึธืื ืืืกืงืืืขื ืึทื ืขืก ืืขื ืขื ืืืขืจืึทืืึธืจืก, ืึธืืขืจ ืืคืืื ืืื ืืื ืึทืืฅ ืืื ื ืืฉื ืึทืืื ืืืึทื: ืขืก ืืขื ืขื ืงืืื ืคึผืจืึธืกื ืึทืจืืึทื ืืึทื ื ืืื ืึทืจืืืกืืึทื ื ืคืื ืงืื (ืึธื ืืืื โ ืกืืฃ ืงืขืื ืจืืืื โ ืจืขื ืืื ื ืืื ืึทืืื ืืืืฃ), ืขืก ืืื ื ืืฉื ืงืืึธืจ ืืื ืืึทื ื ืืืจ ืืืขืื ืืืขืจืืื? ืกืืึทืจืืื ื ืืื C ++20, ืื ืคึผืจืึธืืืขืืก ืืขื ืขื ืกืึทืืืื!
ืขืจืฉืืขืจ ืึธืคึผืฆืืข: ืจืืื ืืืฉืึทื. ืืืจื ืจืึทืคึผืื ื ืืืขืจืืืืขืจื, ืืืจ ืืึทืงืืืขื ืึท ืคึผืจืึธืกื ืฆืืืื ื ืคึฟืึทืจ ืื ืึธื ืืืื ืืื ืกืืฃ ืคืื ืึท ืืืขืจืึทืืืึธื, ืืื ืืืจ ืืืื ืืึทืงืืืขื ืื ืคืืืืงืืื ืฆื ืงืึทืืคึผืึธืื. ืึทืืข ืืขื ืืืื ืขืก ืืจืื ื ืฆื ืืืืขื ืคืื-ืคืืขืืืฉื ืืึทืื ืคึผืจืึทืกืขืกืื ื ืคึผืืืคึผืืืื ื. ืึธืืขืจ ื ืื ืึทืืฅ ืืื ืึทืืื ืืืึทื: ืืืื ืคืื ืื ืืขืืฉืื ืืึธืืืง ืืื ืืืื ืืื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืึท ืกืคึผืขืฆืืคืืฉ ืืืขืจืึทืืึธืจ, ืืืึธืก ืงืขื ืขื ืงืึธืืคึผืืืฆืืจื ืื ืงืึธื ืฆื ืคึฟืึทืจืฉืืืื ืืื ืืืืึทื.
ืจืืง ืคืื
ื ื, ืคึฟืึทืจ ืืขื ืคืึทื, C ++ 20 ืฆืืืขืืขืื ืงืึธืจืึธืืืื ื (ืคืึทื ืืงืฉืึทื ื ืืืขืืขื ืก ื ืึทืืืจ ืืื ืขื ืืขื ืฆื ืืขื ืขืจืึทืืึธืจืก ืืื ืคึผืืืืึธื): ืืืจืืคืืจืื ื ืงืขื ืขื ืืืื ืืืคืขืจื ืืืจื ืฆืืจืืงืงืืืขื ืขืืืขืืข ืงืจืึทื ื ืืืขืจื ืืฉืขืช ืคึผืจืึทืืขืจืืืื ื ืึท ืื ืืขืจืืืืืื ืฉืืึทื. ืืืื, ืืืจ ืืขืจืืจืืืื ื ืื ืืืืื ืืจืืขืื ืืื ืืึทืื ืืื ืขืก ืืืืก, ืึธืืขืจ ืืืื ืขื ืงืึทืคึผืกืึทืืืืืื ื ืึทืืข ืื ืืึธืืืง ืืื ืึท ืกืคึผืขืฆืืคืืฉ ืงืึธืจืึธืืืื ืข.
ืืืขืจ ืขืก ืืื ืึท ืคืืืขื ืืื ืื ืืืืืืื: ืืื ืืขืจ ืืึธืืขื ื ืืื ืืขื ืขื ืืืืื ืืืื ืืขืฉืืืฆื ืืืจื ืืืืืกืืื ื ืงืึทืืคึผืืืืขืจื, ืืื ืืขื ืขื ืืืื ื ืืฉื ืืืคึผืืึทืืขื ืึทื ืืื ืฆืืืืืง ืืื ืืืจ ืืืึธืื ืืื: ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืืื ื ืึธื ื ืืฉื ืืืขืจื ืฆื ื ืืฆื ืืึทืืืืึทืื ืืื ืฆืืึทืืืืืึทืืืง ืึทืืืืฉืขืงืฅ ืืื ืงืึธืจืึธืืืื ืขืก. ืคึผืืืก, ืขืก ืืขื ืขื ืขืืืขืืข ืจืืกืืจืืงืฉืึทื ื ืืืืฃ ืืืึธืก ืงืขื ืขื ืืืื ืงืึธืจืึธืืืื ื, ืืื constexpr ืคืึทื ืืงืฉืึทื ื, ืงืึทื ืกืืจืึทืงืืขืจื / ืืขืกืืจืืงืืึธืจืก ืืื ืืืืคึผื ืืขื ืขื ื ืืฉื ืึทืจืืึทื ืืขืจืขืื ื ืืื ืืขืจ ืจืฉืืื.
ืืืื, ืงืึธืจืึธืืืื ืขืก ืกืึธืืืืข ืึท ืืึทืืืืืืง ืืืื ืคืื ืื ืคึผืจืึธืืืขืืก ืืื ืื ืคึผืึทืฉืืขืก ืคืื ืืึทืื ืคึผืจืึทืกืขืกืื ื ืืึธืืืง, ืึธืืขืจ ืืืืขืจ ืงืจืึทื ื ืืืคึผืืึทืืึทื ืฅ ืืึทืจืคื ืคึฟืึทืจืืขืกืขืจืื ื.
ืืึทืืขืจืืึทืืก:
- ืกืืืืื ืคืื C ++ ืจืืกืืึทื ื -
["ืืขื ืขืจืึทืืึธืจืก, ืงืึธืจืึธืืืื ืขืก ืืื ืื ืืขืจืข ืืืกืงืืื ืคืื ืืึทืจื ืื ืจืึธืืืื ื"] ืืืืืขื ืจืขืงืึธืจืืื ื ืคืื ืื ืืึทืจืืื ืคึฟืื CppCon 2019
C ++ ืืจืืงืก ืคืื ืืึทื ืืขืงืก.ืืึทืงืกื, ืึทื ืืึธื ืคึผืึธืืืืื
ืืื ืืืื ืคืึทืืืึทื ืึทืงืืืืืืืขืื, ืืื ืืื ืืึธืื ืฆื ืื ืกืืจืืืขื ื ืจืืื ืึทืืืืืืขืจื ืืื ืื: ืึท ืจืึทืคึผืขืจ ืฆืืืืฉื ืื ืื ืขืจืืขื ืฆืืืื ื ืืื ืื ืึทืคึผื ืคืื ืขืืืขืืข ืืืืืืึธืืขืง, ืืึธืืื ื ืึธืืขืจ ืคึผืึทืจืกืื ื. ืืื ืืขื ืคืึทื, ืขืก ืืื ืืืืฉืึทืืืึทืื ื ืื ื ืืืืืง ืคึฟืึทืจ ื ืึธื ืึทืคึผืืึทืืึทืืืืฉืึทื. ืึธืืขืจ ืืืึธืก ืืืื ืื ืงืึทืืคึผืึธืื ืึทื ืฅ ืืขื ืขื ืืขื ืืฆื ืืื ืขืืืขืืข ืคืื โโืื ืืขืจืกื ืคืึธืืงืก ืืึทืืื ืื ืืก ืืืืฃ ืื RuNet? ืืื ืึทืืึท ืึท ืกืืืืึทืฆืืข, ืืืจ ืืืขื ืืึธืื ืฆื ืคึผืจืึธืฆืขืก ืืขืจืึทืืืืขืก ืคึผืขืจ ืฉืขื ืคืื ืืึธืืก ืึทืืืื! ืืขืืึธืื ืืขืืขืจ ืืืืืกืขืงืึธื ื ืงืึทืื ืฅ ืืื ืืขืจืืืขืจ ืืืจ ืืึธืื ืฆื ื ืืฆื ืคืึทืจืฉืืื ืืจืืงืก - ืึทื ืืึธื ืคึผืึธืืืืื ืืขืจืขืื ืืืขืื ืืื.
ืืึธืืขืจ ืื ืืขืจืกื ืืฉืืงืึทืืืข ืืืึทืฉืคึผืื ืืื ืืขืืืขื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืื ืืืึทืื-ืฆื-ืืืคึผืืึทืืึทื ืืืืฉืึทื (ืคึผืืืคึผื) ืืืกืืขืจ.
#include <third_party/json.hpp> //PROBLEMS!
struct Value {
Value() = default;
Value(Value&& other) = default;
Value& operator=(Value&& other) = default;
~Value() = default;
std::size_t Size() const { return data_.size(); }
private:
third_party::Json data_;
};
ืืื ืืขื ืืืึทืฉืคึผืื, ืขืจืฉืืขืจ ืืื ืืืืื ืฆื ืืึทืงืืืขื ืืึทืคืจืืึทืขื ืคืื ืื ืืขืืขืจ ืืขืงืขืก ืคืื ืคืื ืืจืืืกื ืืืง ืืืืืจืขืจืื - ืืึธืก ืืืขื ืฆืื ืืืคืฉืืขืื ืืื ืคืึทืกืืขืจ, ืืื ืืืจ ืงืขื ืขื ืืึทืฉืืฆื ืืื ืคืื ืืขืืืขื ื ืึธืืขื ืงืึธื ืคืืืงื ืืื ืื ืืขืจืข ืขื ืืขื ืขืจืจืึธืจืก.
ืึธืืงืื, ืืืจ ืืจืืืขืจืืขืคืืจื # ืื ืงืืืืข ืฆื ืื .ืงืคึผืคึผ ืืขืงืข: ืืืจ ืืึทืจืคึฟื ืึท ืคืึธืจืืืก-ืืขืงืืึทืจืึทืฆืืข ืคืื โโืื ืืื ืืขืืืืงืื ืึทืคึผื, ืืื ืืขืืื ื ืืื std::unique_ptr. ืืืฆื ืืืจ ืืึธืื ืืื ืึทืืืฉ ืึทืืึทืงืืืฉืึทื ื ืืื ืื ืืขืจืข ืคึผืจืืงืจืข ืืื ืื ืืื ืืึทืื ืฆืขืืืึธืจืคื ืืืืขืจ ืึท ืืื ืื ืคืื ืืึทืื ืืื ืจืืืืกื ืืขืจืึทื ืืื. std::aligned_storage ืงืขื ืขื ืืขืืคึฟื ืืื ืึทืืข ืืขื.
struct Value {
// ...
private:
using JsonNative = third_party::Json;
const JsonNative* Ptr() const noexcept;
JsonNative* Ptr() noexcept;
constexpr std::size_t kImplSize = 32;
constexpr std::size_t kImplAlign = 8;
std::aligned_storage_t<kImplSize, kImplAlign> data_;
};
ืืขืจ ืืืืื ืคึผืจืึธืืืขื: ืืืจ ืืึทืจืคึฟื ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืื ืืจืืืก ืืื ืึทืืืื ืืึทื ื ืคึฟืึทืจ ืืขืืขืจ ืจืึทืคึผืขืจ - ืืึธืื ืืื ืื ืืึทืื ืืื ืืืขืจ ืคึผืืืคึผื ืืืกืืขืจ ืืื ืคึผืึทืจืึทืืขืืขืจืก , ื ืืฆื ืขืืืขืืข ืึทืจืืืืจืึทืจืืฉ ืืืึทืืืขืก ืืื ืืืืื ืึท ืืฉืขืง ืฆื ืื ืืขืกืืจืืงืืืจ ืึทื ืืืจ ืืึธืื ืึทืืฅ ืจืขืื:
~FastPimpl() noexcept {
validate<sizeof(T), alignof(T)>();
Ptr()->~T();
}
template <std::size_t ActualSize, std::size_t ActualAlignment>
static void validate() noexcept {
static_assert(
Size == ActualSize,
"Size and sizeof(T) mismatch"
);
static_assert(
Alignment == ActualAlignment,
"Alignment and alignof(T) mismatch"
);
}
ืืื ื ื ืืื ืฉืืื ืืืคืืื ื ืืืขื ืคึผืจืึทืกืขืกืื ื ืื ืืขืกืืจืืงืืืจ, ืืขืจ ืงืึธื ืืืขื ืืืื ืคึผืึทืจืกืขื ืจืืืืืง ืืื ืืื ืืขืจ ืืึทืืืื ื ืืื ืข ืขืก ืืืขื ืจืขืืืืืึทื ืื ืคืืจืืื ืื ืืจืืืก ืืื ืึทืืืื ืืึทื ื ืืืึทืืืขืก ืืืึธืก ืืึทืจืคึฟื ืฆื ืืืื ืืจืืื ืืื ืขืจืจืึธืจืก. ืืืื, ืืื ืืขืจ ืคึผืจืืึทื ืคืื ืืืื ื ืึธื ืืึทืืืื ื ืืืืคื, ืืืจ ืืึทืงืืืขื ืืึทืคืจืืึทืขื ืคืื ืื ืืื ืึทืืืฉ ืึทืืึทืงืืืฉืึทื ืคืื ืืื ืืขืืืืงืื ืงืืืกื, ืืึทืืึทืืื ืื ืึทืคึผื ืืื ืึท .ืงืคึผืคึผ ืืขืงืข ืืื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื, ืืื ืืืื ืืึทืงืืืขื ืึท ืคึผืืึทื ืืืึธืก ืืื ืืขืจ ืคึผืึทืกืืง ืคึฟืึทืจ ืงืึทืืฉืื ื ืืืจื ืื ืคึผืจืึทืกืขืกืขืจ.
ืืึธืืื ื ืืื ืคึผืึทืจืกืื ื ืืื ืืขืืืขื ืืืืื ืืงืขืจ ืืืคึผืจืขืกืืื ืืื ืืขืจืืืขืจ ืืืขื ื ืืฉื ืืืื ืืขืจืืื ื ืืื ืืขื ืจืขืฆืขื ืืืข.
ืื ืืขืืืื ื ืกืืืืื ืืขื ืขื ืื ืืืฆื ืืื ืื ืคืืืืขื ืืข ืืื ืง:
ืืึธืืขืจื ืืขืงื ืืงืก ืคึฟืึทืจ ืืขืืขืกืงืขื ืืืื ืงืึธื ืืจืืงื, Bjรถrn Fahller
ืืื ืืขื ืฉืืืขืก, Bjรถrn Fahller ืืืืืื ืขืืืขืืข ืคืึทืจืฉืืืขื ืข ืืืขืื ืฆื ืงืึทืืืึทื ืื ืกืืืืืกืืืง ืคืืึธื ืคืื ืจืืคึผืืืื ืฆืืฉืืึทื ื ืืฉืขืงืก:
assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);
ืืขืืื ื ืืึทืงืึทื ื? ืืืจื ื ืืฆื ืขืืืขืืข ืฉืืึทืจืง C ++ ืืขืงื ืืงืก ืื ืืจืึธืืืืกื ืืื ืื ืืขืฆืืข ืกืืึทื ืืึทืจืืก, ืืืจ ืงืขื ืขื ืขืืืืึทื ืืื ืื ืกืืจืืืขื ื ืื ืืขืืืข ืคืึทื ืืงืฉืึทื ืึทืืืื ืึธื ืงืืื ืคืึธืจืฉืืขืืื ื ืฉืืจืึธืฃ. ืคืึทืจืืืืึทืื:
assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));
ืฆื ืฉืขืคึผื ืึท ืึทื ืคืืงืกื ื ืืืขืจ ืคืื ืืฉืขืงืก, ืืืจ ืืื ืืึทืจืคึฟื ืฆื ื ืืฆื ืืืึทืจืืึทืืืง ืืขืืคึผืืึทืืขืก ืืื ืคืึทืจืืืืื ืืืืกืืจืืงื. ืืึธืืืจ ืืืขืจื ืขืืขื ืึทื ืืืจ ืืืืื ืฆื ืงืึธื ืืจืึธืืืจื ืื ืืงืืืึทืืึทืื ืคืื ืขืืืขืืข ืืืขืจืืึทืืึทืื ืฆื ืื ืขื ืื ืก ืฉืืึทื_ืืืคึผืข ืขืืขืืขื ื. ืืขืจ ืขืจืฉืืขืจ ืืึทื ืืืึธืก ืงืืื ืฆื ืืืื ืื ื ืืื ืฆื ืฉืจืืึทืื ืึท ืืขืืคึผืขืจ ืคึฟืื ืงืฆืืข ืืื_ืึทื ื_ืคืื:
enum state_type { IDLE, CONNECTED, DISCONNECTED };
template <typename ... Ts>
bool is_any_of(state_type s, const Ts& ... ts) {
return ((s == ts) || ...);
}
ืืขื ืื ืืขืจืืืืืื ืจืขืืืืืึทื ืืื ืืืกืึทืคึผืืื ืื. ืืื ืืืฆื ืืขืจ ืงืึธื ืืื ื ืืฉื ืืขืจ ืืืื ืขืืืืืง:
assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED));
ื ืื-ืืืคึผ ืืืกืืขืจ ืคึผืึทืจืึทืืขืืขืจืก ืืืขื ืืขืืคึฟื ืคึฟืึทืจืืขืกืขืจื ืื ืกืืืืึทืฆืืข ืึท ืืืกื. ืืื ืืืืขืจ ืืืืฃ, ืืืจ ืืืขืื ืึทืจืืืขืจืคืืจื ืื ืื ืืืขืจืึทืืึทื ืขืืขืืขื ืื ืคืื ืื ืขื ืื ืฆื ืืขืจ ืจืฉืืื ืคืื ืืืกืืขืจ ืคึผืึทืจืึทืืขืืขืจืก:
template <state_type ... states>
bool is_any_of(state_type t) {
return ((t == states) | ...);
}
assert(is_any_of<IDLE, DISCONNECTING, DISCONNECTED>(state));
ืืืจื ื ืืฆื ืึทืืืึธ ืืื ืึท ื ืื-ืืืคึผ ืืขืืคึผืืึทืืข ืคึผืึทืจืึทืืขืืขืจ (C ++17), ืืขืจ ืฆืืืึทื ื ืคืฉืื ืืืฉืขื ืขืจืึทืืืืืื ืฆื ืงืึทืืคึผืขืจืึทืกืึทื ื ื ืื ืืืืื ืืื ืฉืืึทื_ืืืคึผืข ืขืืขืืขื ืื, ืึธืืขืจ ืืืื ืืื ืคึผืจืืืืืืื ืืืืคึผืก ืืืึธืก ืงืขื ืขื ืืืื ืืขืืืืื ื ืืื ื ืื-ืืืคึผ ืืขืืคึผืืึทืืข ืคึผืึทืจืึทืืขืืขืจืก:
template <auto ... alternatives, typename T>
bool is_any_of(const T& t) {
return ((t == alternatives) | ...);
}
ืืืจื ืื ืกืึทืงืกืขืกืืื ืืืคึผืจืืืืืึทื ืฅ, ืื ืืขืืขืื ืืืึทื ืกืื ืืึทืงืก ืคึฟืึทืจ ืืฉืขืงืก ืืื ืึทืืฉืืืื:
template <class ... Ts>
struct any_of : private std::tuple<Ts ...> {
// ะฟะพะปะตะฝะธะผัั ะธ ัะฝะฐัะปะตะดัะตะผ ะบะพะฝััััะบัะพัั ะพั tuple
using std::tuple<Ts ...>::tuple;
template <typename T>
bool operator ==(const T& t) const {
return std::apply(
[&t](const auto& ... ts) {
return ((ts == t) || ...);
},
static_cast<const std::tuple<Ts ...>&>(*this));
}
};
template <class ... Ts>
any_of(Ts ...) -> any_of<Ts ... >;
assert(any_of(IDLE, DISCONNECTING, DISCONNECTED) == state);
ืืื ืืขื ืืืืฉืคึผืื, ืื ืืขืืืงืืืึธื ืคืืจืขืจ ืกืขืจืืืขืก ืฆื ืคึฟืึธืจืฉืืึธืื ืื ืืขืืขืื ืกืืจืืงืืืจ ืืืกืืขืจ ืคึผืึทืจืึทืืขืืขืจืก ืฆื ืื ืงืึทืืคึผืืืืขืจ, ืืืึธืก ืืืืืกื ืื ืืืืคึผืก ืคืื ืื ืงืึธื ืกืืจืืงืืึธืจ ืึทืจืืืืขื ืื.
ืืืืึทืืขืจ - ืืขืจ ืืฉืืงืึทืืืข. Bjorn ืืขืจื ื ืืื ืฆื ืืขื ืขืจืึทืืืืืจื ืื ืจืืืึทืืืื ื ืงืึธื ืคึฟืึทืจ ืคืึทืจืืืืึทื ืึธืคึผืขืจืืืืขืจื ืืืืึทืืขืจ ืคืื ==, ืืื ืืขืจื ืึธื ืคึฟืึทืจ ืึทืจืืืืจืึทืจืืฉ ืึทืคึผืขืจืืืฉืึทื ื. ืฆืืืืืขื ืื ืืืขื, ืึทืืึท ืคึฟืขืึดืงืืืื ืืื ืงืืื_ืื ืืงืืืข_ืึทืืจืขืก ืึทืืจืืืืื (C ++20) ืืื ืืืกืืขืจ ืคึผืึทืจืึทืืขืืขืจืก ืืื ืืึทืืืืึท ืคืึทื ืืงืฉืึทื ื (C ++20) ืืขื ืขื ืืขืจืงืืขืจื ืืื ืืืืฉืคืืื ืคืื ื ืืฆื. (ืื, ืืืฆื ืื ืืึทืืืืึท ืกืื ืืึทืงืก ืืื ืืคืืื ืืจืื ืืขืจ ืฆื ืืขืืขื ืงืขื - ืืึธืก ืืขื ืขื ืคืืจ ืงืึธื ืกืขืงืืืืืืข ืคึผืขืจื ืคืื ืงืืึทืืขืจื ืคืื ืึทืืข ืืื ืื.) ืื ืืขืฆื ืืืืืื ื ื ืืฆื ืคืึทื ืืงืฉืึทื ื ืืื ืงืึธื ืกืืจืืงืืึธืจ ืืขืืึทืืืก ืืึทืงืข ืืืึทืจืืก ืืืื ื ืฉืื, ื ืื ืฆื ืืขืจืืึธื ืขื ืื ืืืืกืืจืืง ืืืคึผืืข ืืื ืื ืืขืกืืขืจ ืืจืืืืฆืืขืก ืคืื ืืึทืืืืึท ืงืึทืืงืืืืก.
ืืื ืื ืกืืฃ, ืืึธื ื ืื ืคืึทืจืืขืกื ืฆื ืคืืืืืฉ ืขืก:
- ืืขืืขื ืงื ืึทื ืืึทืืืืึทืก ืืขื ืขื ืงืึทื ืกืืขืงืกืคึผืจ ืคึฟืึทืจ ืคืจืื;
- ืืึธืืืจ ืืืืื ืฉืืืืืขืกืืืง ืคืึธืจืืืขืจืืื ื ืืื ืงืืง ืืื ืืืื ืืืขืก ืกืื ืืึทืงืก ืืื ืืึทืฆืืื ื ืฆื ืื ืคึผืึทืจืึทืืขืืขืจ ืคึผืึทืง ืืื ืื ืืึทืืืืึท ืงืืึธืืืฉืขืจ;
- ืืื ืก ืืขืื ืื ืงืึทืืคึผืืืืขืจ ืืขืจ ืึทืคึผืขืจืืื ืึทืืื ืคึฟืึทืจ ืึธืคึผืืืืืืึทืืืึธื ืก ืืื ืงืึทื ืืืฉืึทื ืึทื ื ืื ืืืฅ;
- ืืึธืืืจ ื ืขืืขื ืงืขืืจ ืคืื ืืขืจ ืคืึทืจืฉืืืืืง ืืขืืช ืจืขืืืืืึทื ืืื ืืขืืคึผืืึทืืขืก ืืึทื ืง ืฆื ืืงืกืคึผืืืกืึทื ืฆืืจืืงืงืืืขื ืืืึทืืืขืก ืคืื ืืึทืืืืึทืก. ืืึธืก ืืืขื ืฆืืืื ืืขื ืืขื ืงืึทืืคึผืืืืขืจ ืฆื ืืึธื ืืขืจ ืืฉืขืงืก ืืืืืขืจ ืื ืืืกืืขืจ ืคึฟืื ืงืฆืืข ืืื ืคืืงืืืฉ ืืขืจืืคื - ืืื ืื ืืืคึผ ืงืึธื ืืจืึธืืืจืื ื ืืื ืข.
ืคึฟืึทืจ ืืขืืึทืืืก, ืืืืข ืึธืคึผืฉืืงื ืฆื ืื ืืขืงืฆืืข ืืึทืืขืจืืึทืืก:
- ืืขืืืื ื ืกืืืืื:
[ืืึธืืขืจื ืืขืงื ืืงืก ืฆื ืืึทืืื ืืืื ืงืึธื ืืจืืงื] ืืงืืจ ืงืึธื ืืืืฃ ืืืืืื ืืืืจ ืก ืืืึธื ืึทืจืืืงื
ืืื ืืืขืจ ืืืคึผืจืขืกืกืืึธื ืก
ืืื ืืืขืจ ืขืจืฉืืขืจ ืึธื ืืืื ืืื C ++ ืจืืกืืึทื ื ืืื ืืขืืืขื ืืขืืขืจืึทืืึทื ืคึฟืึทืจ ืืืึทื ืื ืืขื ืกืืื. ืืื ืืึทื ืืขืจ ืจืืฉื ืคืื C ++ ืจืืกืืึทื ื ืืื ืึท ืึธืคื ืืึทืจืฆืืง ืืขืฉืขืขื ืืฉ, ืืื ืื ืฉืืจื ืฆืืืืฉื ืืจืืื ืื ื ืืื ืืขืื ืงืึธืืื ืืงืึทืฆืืข ืืื ืึผืืขื ืืืคึผืขืจืกืขืคึผืืืืึทื. ืึทืืฅ, ืคืื ืื ืฉืืืืื ื ืคืื ืื ืกืคึผืืงืขืจื ืฆื ืื ืงืึทืืคึผืึทืืืฉืึทื ื ืคืื ืื ืืขืฉืขืขื ืืฉ ืคึผืึทืจืื ืขืจืก, ืืื ืงืึทื ืืืกืืื ืฆื ืืขืึทืืขื ืืืกืงืืกืืขืก. ืืขืจ ืืื ืืึทืื ืคืื ืืขืจ ืืืฆืื ื, ืงืึทื ืกืืกืืื ื ืคืื ืจืืคึผืึธืจืฅ, ืงืึธืืืขืจืก ืึท ืคืขืจืื ืืจืืื ืงืืื ืคืื ืืขืืขืก ืึทืจืืึทื ืืขืจืขืื ื C ++ ืื ืึธืืืืืืฉืึทื ื, ืคืึทื ืฉืืืืืื ืคืื ืืจืืืก ืคึผืจืึทืืืฉืขืงืก ืืื ืืืืขืืฉืข ืึทืจืงืึทืืขืงืืฉืขืจืึทื ืงืึทื ืกืืืขืจืืืฉืึทื ื. ืึธืืขืจ ืขืก ืืืึธืื ืืืื ืืืืืืฉืขืจืืืง ืฆื ืืืื ืึธืจืืจื ืื ืืขืืขืืฉืึทืคืืืขื ืงืึธืืคึผืึธื ืขื ื ืคืื ืืขืจ ืืขืฉืขืขื ืืฉ, ืืืึธืก ืืขืืคึผืก ืืึทืงืืืขื ืฉืคึผืจืึทื ืืึทืจืืขืจื ืืื ืืึทืฆืืื ื ื ืื ืืืืื ืฆื C ++.
ืืืจ ืืึทื ืงืขื ืื ืงืึธื ืคึฟืขืจืขื ืฅ ืึธืจืืึทื ืืืืขืจื ืคึฟืึทืจ ืื ืืขืืขืื ืืืื ืฆื ืึธื ืืืื ื ืขืืขื ืืื ืึทืืึท ืึท ืืขืฉืขืขื ืืฉ!
ืืืจ ืงืขื ืืึธืื ืืขืืขื ืื ืึธืจืืึทื ืืืืขืจื 'ืคึผืึธืกืื ืืืขืื ืื ืคืึทืจืืึทื ืืขื ืืืื, ืคืึธืจืฉืืขืื ืืื ืฆืืงืื ืคึฟื ืคืื C ++ ืจืืกืืึทื ื
ืืึทื ืงืขื ืคึฟืึทืจ ืืืืขื ืขื, ืืื ืืืจ ืืึธืคื ืึทื ืืื ืืืขืจ ืจืืืืืืื ื ืคืื ืืขืฉืขืขื ืืฉื ืืื ื ืืฆืืง!
ืืงืืจ: www.habr.com