C++ เดฑเดทเตเดฏ: เด…เดคเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเดšเตเดšเต

เดจเดพเดŸเด•เดคเตเดคเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดšเตเดตเดฐเดฟเตฝ C++ เด•เต‹เดกเต เดคเต‚เด™เตเด™เดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดชเดฑเดžเตเดžเดพเตฝ, เด…เดตเดธเดพเดจเด‚ เด…เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดพเดฒเดฟเตฝ เดตเต†เดŸเดฟเดตเดฏเตเด•เตเด•เตเด‚.

Bjarne Stroustrup

เด’เด•เตเดŸเต‹เดฌเตผ 31 เดฎเตเดคเตฝ เดจเดตเด‚เดฌเตผ 1 เดตเดฐเต†, C++ เดฑเดทเตเดฏ เดชเต€เดฑเตเดฑเตผ เด•เต‹เตบเดซเดฑเตปเดธเต เดธเต†เดจเตเดฑเต เดชเต€เดฑเตเดฑเต‡เดดเตโ€Œเดธเตเดฌเตผเด—เดฟเตฝ เดจเดŸเดจเตเดจเต - เดฑเดทเตเดฏเดฏเดฟเดฒเต† เดตเดฒเดฟเดฏ เดคเต‹เดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เด•เต‹เตบเดซเดฑเตปเดธเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต, JUG Ru เด—เตเดฐเต‚เดชเตเดชเต เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเดšเตเดšเต. เด…เดคเดฟเดฅเดฟ เดธเตเดชเต€เด•เตเด•เดฑเตเด•เดณเดฟเตฝ C++ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟ เด…เด‚เด—เด™เตเด™เตพ, CppCon เดธเตเดชเต€เด•เตเด•เดฑเตเด•เตพ, O'Reilly เดชเตเดธเตเดคเด• เดฐเดšเดฏเดฟเดคเดพเด•เตเด•เตพ, LLVM, libc++, Boost เดคเตเดŸเด™เตเด™เดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดฎเต†เดฏเดฟเดจเตเดฑเดจเตผเดฎเดพเตผ เดŽเดจเตเดจเดฟเดตเดฐเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดคเดคเตเดธเดฎเดฏ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเตฝ เดตเตˆเดฆเด—เตเดงเตเดฏเด‚ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดญเดตเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเดพเดจเตเด‚ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดชเดฐเดฟเดšเดฏเดธเดฎเตเดชเดจเตเดจเดฐเดพเดฏ C++ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต†เดฏเดพเดฃเต เด•เต‹เตบเดซเดฑเตปเดธเต เดฒเด•เตเดทเตเดฏเดฎเดฟเดŸเตเดจเตเดจเดคเต. เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เตเด‚ เดฌเดฟเดฐเตเดฆ เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เตเด‚ เดฏเต‚เดฃเดฟเดตเต‡เดดเตเดธเดฟเดฑเตเดฑเดฟ เด…เดงเตเดฏเดพเดชเด•เตผเด•เตเด•เตเด‚ เดตเดณเดฐเต† เดจเดฒเตเดฒ เด•เดฟเดดเดฟเดตเตเด•เตพ เดจเตฝเด•เตเดจเตเดจเต.

เด•เต‹เตบเดซเดฑเตปเดธเดฟเดจเตเดฑเต† เดฎเต‹เดธเตเด•เต‹ เดชเดคเดฟเดชเตเดชเต เด…เดŸเตเดคเตเดค เดตเตผเดทเด‚ เดเดชเตเดฐเดฟเดฒเดฟเตฝ เดคเดจเตเดจเต† เดธเดจเตเดฆเตผเดถเดฟเด•เตเด•เดพเตป เดฒเดญเตเดฏเดฎเดพเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเดจเดฟเดŸเดฏเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพ เด…เดตเดธเดพเดจ เดชเดฐเดฟเดชเดพเดŸเดฟเดฏเดฟเตฝ เดชเด เดฟเดšเตเดš เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเตเด‚. 

C++ เดฑเดทเตเดฏ: เด…เดคเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเดšเตเดšเต

เดซเต‹เดŸเตเดŸเต‹เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณเดคเต เด•เต‹เตบเดซเดฑเตปเดธเต เด†เตฝเดฌเด‚

เดžเด™เตเด™เดณเต† เด•เตเดฑเดฟเดšเตเดšเต

เดจเดพเดทเดฃเตฝ เดฑเดฟเดธเตผเดšเตเดšเต เดฏเต‚เดฃเดฟเดตเต‡เดดเตเดธเดฟเดฑเตเดฑเดฟ เดนเดฏเตผ เดธเตเด•เต‚เตพ เด“เดซเต เด‡เด•เตเด•เดฃเต‹เดฎเดฟเด•เตเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฐเดฃเตเดŸเต เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพ - เดธเต†เดจเตเดฑเต เดชเต€เดฑเตเดฑเต‡เดดเตเดธเตเดฌเตผเด—เต เดˆ เดชเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเต:

  • เด…เดชเตเดฒเตˆเดกเต เดฎเดพเดคเตเดคเดฎเดพเดฑเตเดฑเดฟเด•เตเดธเต เด†เตปเดกเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ เดธเดฏเตปเดธเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฏเดฟ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เตพ เดชเด เดฟเด•เตเด•เตเดจเตเดจ เดจเดพเดฒเดพเด‚ เดตเตผเดท เดฌเดฟเดฐเตเดฆ เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเดจเดฟเดฏเดพเดฃเต เดฒเดฟเดธ เดตเดพเดธเดฟเดฒเต†เด™เตเด•เต‹. เดธเตผเดตเตเดตเด•เดฒเดพเดถเดพเดฒเดฏเดฟเดฒเต† เดŽเดจเตเดฑเต† เด†เดฆเตเดฏ เดตเตผเดทเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต† C++ เดญเดพเดทเดฏเตเดฎเดพเดฏเดฟ เดชเดฐเดฟเดšเดฏเดคเตเดคเดฟเดฒเดพเดฏ เดŽเดจเดฟเด•เตเด•เต เดชเดฟเดจเตเดจเต€เดŸเต เดตเตเดฏเดตเดธเดพเดฏเดคเตเดคเดฟเดฒเต† เด‡เดจเตเดฑเต‡เตบเดทเดฟเดชเตเดชเดฟเดฒเต‚เดŸเต† เด…เดคเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดš เด…เดจเตเดญเดตเด‚ เดฒเดญเดฟเดšเตเดšเต. เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เดณเต‹เดŸเตเดณเตเดณ เด…เดญเดฟเดจเดฟเดตเต‡เดถเดตเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เดซเด‚เด—เตเดทเดฃเตฝ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เตเด‚ เด•เต‹เตบเดซเดฑเตปเดธเดฟเดฒเต† เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เดฎเตเดฆเตเดฐ เดชเดคเดฟเดชเตเดชเดฟเดšเตเดšเต.
  • "เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เด†เตปเดกเต เดกเดพเดฑเตเดฑ เด…เดจเดพเดฒเดฟเดธเดฟเดธเต" เดŽเดจเตเดจ เดฎเดพเดธเตเดฑเตเดฑเต‡เดดเตเดธเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต† เด’เดจเตเดจเดพเด‚ เดตเตผเดท เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเดจเดฟเดฏเดพเดฃเต เดกเดพเดจเดฟเดฏ เดธเตเดฎเดฟเตผเดจเต‹เดตเต. เดธเตเด•เต‚เดณเดฟเตฝ เดชเด เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดžเดพเตป เดธเดฟ ++ เตฝ เด’เดณเดฟเดฎเตเดชเตเดฏเดพเดกเต เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดŽเดดเตเดคเดฟ, เดคเตเดŸเตผเดจเตเดจเต เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดญเดพเดท เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เดจเดฟเดฐเดจเตเดคเดฐเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเด•เดฏเตเด‚ เด’เดŸเตเดตเดฟเตฝ เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจ เดญเดพเดทเดฏเดพเดฏเดฟ เดฎเดพเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เดŽเดจเตเดฑเต† เด…เดฑเดฟเดตเต เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดคเดฟเดฏ เด…เดตเดธเดฐเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเด เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดžเดพเตป เด•เต‹เตบเดซเดฑเตปเดธเดฟเตฝ เดชเด™เตเด•เต†เดŸเตเด•เตเด•เดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต.

เดตเดพเตผเดคเตเดคเดพเด•เตเด•เตเดฑเดฟเดชเตเดชเดฟเตฝ, เดซเดพเด•เตเด•เตฝเดฑเตเดฑเดฟ เดจเต‡เดคเตƒเดคเตเดตเด‚ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดชเต†เดทเตเดฏเดพเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดชเดฐเดฟเดชเดพเดŸเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเต. เดธเต†เดชเตเดฑเตเดฑเด‚เดฌเดฑเดฟเตฝ เดžเด™เตเด™เตพ C++ เดฑเดทเตเดฏเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เดพเดฃเตเด•เดฏเตเด‚ เดถเตเดฐเต‹เดคเดพเด•เตเด•เดณเดพเดฏเดฟ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เด‡เดคเตเดคเดฐเด‚ เดธเดฎเตเดฎเต‡เดณเดจเด™เตเด™เดณเดฟเตฝ เดชเด™เตเด•เต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเต เดžเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏ เด…เดจเตเดญเดตเดฎเดพเดฃเต.

เด•เต‹เตบเดซเดฑเตปเดธเต เด˜เดŸเดจ

  • เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ

เดฐเดฃเตเดŸเต เดฆเดฟเดตเดธเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ, เดตเดฟเดฆเด—เตเดงเตผ 30 เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดตเดพเดฏเดฟเดšเตเดšเต, เดจเดฟเดฐเดตเดงเดฟ เดšเตผเดšเตเดšเดพ เดตเดฟเดทเดฏเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต: เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดญเดพเดทเดพ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเดŸเต† เดคเดจเตเดคเตเดฐเดชเดฐเดฎเดพเดฏ เด‰เดชเดฏเต‹เด—เด‚, เดชเตเดคเดฟเดฏ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเต เดตเดฐเดพเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดญเดพเดทเดพ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เตพ, C++ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจเดฏเดฟเดฒเต† เดตเดฟเดŸเตเดŸเตเดตเต€เดดเตเดšเด•เตพ, เด…เดตเดฏเตเดŸเต† เด…เดจเดจเตเดคเดฐเดซเดฒเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเตเตปเด•เดฐเตเดคเดฒเตเด•เตพ, เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ. เดฐเดธเด•เดฐเดฎเดพเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ, เด•เต‚เดŸเดพเดคเต† เดญเดพเดทเดพ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเตเดฑเต† เดšเดฟเดฒ เด…เดฃเตเดŸเตผ-เดฆเดฟ-เดนเตเดกเต เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเตเด‚. เดฎเต‚เดจเตเดจเต เดชเตเดฐเด•เดŸเดจเด™เตเด™เตพ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดŸเดจเตเดจเต, เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เดฐเดฃเตเดŸเต เดฑเดทเตเดฏเตป เดญเดพเดทเดฏเดฟเดฒเตเด‚ เด’เดจเตเดจเต เด‡เด‚เด—เตเดฒเต€เดทเดฟเดฒเตเด‚.

  • เดšเตผเดšเตเดšเดพ เดฎเต‡เด–เดฒเด•เตพ

เดชเตเดฐเดธเด‚เด—เดคเตเดคเดฟเดจเตเดถเต‡เดทเด‚, เดšเต‹เดฆเดฟเด•เตเด•เดพเดคเตเดค เดŽเดฒเตเดฒเดพ เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เดพเดคเตเดค เดšเตผเดšเตเดšเด•เดณเตเด‚ เดธเตเดชเต€เด•เตเด•เดฑเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดจเดฟเดฏเตเด•เตเดค เดฎเต‡เด–เดฒเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดฟ, เดฎเดพเตผเด•เตเด•เตผ เดฌเต‹เตผเดกเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดธเด‚เดญเดพเดทเดฃเด™เตเด™เตพเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เด‡เดŸเดตเต‡เดณเดฏเดฟเตฝ เดธเดจเตเดคเต‹เดทเด•เดฐเดฎเดพเดฏ เดธเด‚เดญเดพเดทเดฃเด‚ เดจเดŸเดคเตเดคเดพเดจเตเดณเตเดณ เดจเดฒเตเดฒเตŠเดฐเต เดตเดดเดฟ.

  • เดฎเดฟเดจเตเดจเตฝ เดธเด‚เดธเดพเดฐเด™เตเด™เดณเตเด‚ เด…เดจเต—เดชเดšเดพเดฐเดฟเด• เดšเตผเดšเตเดšเด•เดณเตเด‚

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดจเตฝเด•เดพเตป เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดตเตˆเด•เตเดจเตเดจเต‡เดฐเดคเตเดคเต† เดฎเดฟเดจเตเดจเตฝ เดชเตเดฐเดธเด‚เด—เดคเตเดคเดฟเดจเดพเดฏเดฟ เดตเตˆเดฑเตเดฑเตเดฌเต‹เตผเดกเดฟเตฝ เดธเตˆเตป เด…เดชเตเดชเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เต‹เตบเดซเดฑเตปเดธเต เดตเดฟเดทเดฏเดคเตเดคเต† เด•เตเดฑเดฟเดšเตเดšเต เดŽเดจเตเดคเตเด‚ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เด…เดžเตเดšเต เดฎเดฟเดจเดฟเดฑเตเดฑเต เดธเดฎเดฏเด‚ เดจเต‡เดŸเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, C++ เดจเดพเดฏเตเดณเตเดณ เดธเดพเดจเดฟเดฑเตเดฑเตˆเดธเดฑเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดฆเตเดฐเตเดค เด†เดฎเตเด–เด‚ (เดšเดฟเดฒเตผเด•เตเด•เต เด‡เดคเต เดชเตเดคเดฟเดฏเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต) เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เต‡เตพเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเด‚ เด•เดดเดฟเดฏเตเดจเตเดจ, เดŽเดจเตเดจเดพเตฝ เด•เดพเดฃเดพเดคเตเดค เด’เดฐเต เดฌเด—เดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เด•เดฅ.

เดฎเดฑเตเดฑเตŠเดฐเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดชเดพเดจเตฝ เดšเตผเดšเตเดšเดฏเดพเดฃเต "เดนเตƒเดฆเดฏเดคเตเดคเต‹เดŸเต เดนเตƒเดฆเดฏเดคเตเดคเต‹เดŸเต เด•เต‚เดŸเดฟเดฏ เดธเดฎเดฟเดคเดฟ." เดธเตเดฑเตเดฑเต‡เดœเดฟเตฝ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเตˆเดธเต‡เดทเตป เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดฏเดฟเดฒเต† เดšเดฟเดฒ เด…เด‚เด—เด™เตเด™เดณเตเดฃเตเดŸเต, เดชเตเดฐเตŠเดœเด•เตเดŸเดฑเดฟเตฝ เด’เดฐเต เด…เดŸเตเดชเตเดชเต เด‰เดฃเตเดŸเต (เด”เดฆเตเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ - เด’เดฐเต เด†เดคเตเดฎเดพเตผเดคเตเดฅเดฎเดพเดฏ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป, เดชเด•เตเดทเต‡ "เดŽเดฒเตเดฒเดพเด‚ เดคเต€เดฏเดฟเดฒเดพเดฏเดคเดฟเดจเดพเตฝ" เด•เดพเดฐเดฃเด‚ เดฐเดธเด•เดฐเดฎเดพเดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต), C ++ เดจเตเดฑเต† เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเดฟเดจเต†เดฏเตเด‚ เดชเตŠเดคเตเดตเดพเดฏ เด•เดพเดดเตเดšเดชเตเดชเดพเดŸเดฟเดจเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ , เดšเต‚เดŸเต‡เดฑเดฟเดฏ เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดšเตผเดšเตเดšเด•เดณเตเด‚ เดนเต‹เดณเดฟเดตเดพเดฑเตเด•เดณเตเด‚ เด‡เดฒเตเดฒเดพเดคเต†. เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เด‰เดฑเดชเตเดชเดฟเดฒเตเดฒเดพเดคเตเดคเดคเต‹ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดฑเดฟเดฏเดพเดคเตเดคเดคเต‹ เด†เดฏ เดœเต€เดตเดจเตเดณเตเดณ เด†เดณเตเด•เดณเตเด‚ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดฏเดฟเตฝ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเดฟ.

เดนเต‹เดณเดฟเดตเดพเดฑเตเด•เดณเตเดŸเต† เด†เดฐเดพเดงเด•เตผเด•เตเด•เดพเดฏเดฟ, เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เด‡เดตเดจเตเดฑเต เด•เต‡เดธเดฟเตฝ เดคเตเดŸเตผเดจเตเดจเต - BOF เดธเต†เดทเตป โ€œGo vs. C++โ€. เดžเด™เตเด™เตพ เด’เดฐเต เด—เต‹ เดชเตเดฐเต‡เดฎเดฟ, เด’เดฐเต C++ เด•เดพเดฎเตเด•เดจเต† เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต, เดธเต†เดทเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด…เดตเตผ เด’เดฐเตเดฎเดฟเดšเตเดšเต เด’เดฐเต เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ 100500 เดธเตเดฒเตˆเดกเตเด•เตพ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเต (C++ เดฒเต† เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเดฟเดฒเต† เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Go-เดฏเดฟเดฒเต† เดœเดจเดฑเดฟเด•เตโ€Œเดธเดฟเดจเตเดฑเต† เด…เดญเดพเดตเด‚ เดชเต‹เดฒเต†), เดคเตเดŸเตผเดจเตเดจเต เด…เดตเตผ เดคเดฎเตเดฎเดฟเตฝ เดธเดœเต€เดตเดฎเดพเดฏ เดšเตผเดšเตเดšเดฏเตเด‚ เด’เดชเตเดชเด‚ เดชเตเดฐเต‡เด•เตเดทเด•เดฐเต‹เดŸเตŠเดชเตเดชเด‚, เดชเตเดฐเต‡เด•เตเดทเด•เตผ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดฐเดฃเตเดŸเต เด•เดพเดดเตเดšเดชเตเดชเดพเดŸเตเด•เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดนเต‹เดณเดฟเดตเตผ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดจเต เดชเตเดฑเดคเตเดคเดพเดฃเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต†เด™เตเด•เดฟเตฝ, เดฎเต‹เดกเดฑเต‡เดฑเตเดฑเตผ เด‡เดŸเดชเต†เดŸเตเดŸเต เด•เด•เตเดทเดฟเด•เดณเต† เด…เดจเตเดฐเดžเตเดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เด†เดธเด•เตเดคเดฟ เด‰เดณเดตเดพเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต: เด†เดฐเด‚เดญเดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเตเด•เตพเด•เตเด•เต เดถเต‡เดทเด‚, เดธเตเดฒเตˆเดกเตเด•เดณเตเดŸเต† เดชเด•เตเดคเดฟ เดฎเดพเดคเตเดฐเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ. เด…เดตเดธเดพเดจเด‚ เดตเดณเดฐเต† เดคเตเดตเดฐเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเต‡เดฃเตเดŸเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต.

  • เดชเด™เตเด•เดพเดณเดฟ เดจเดฟเตฝเด•เตเด•เตเดจเตเดจเต

เด•เต‹เตบเดซเดฑเตปเดธเดฟเดจเตเดฑเต† เดชเด™เตเด•เดพเดณเดฟเด•เดณเต† เดนเดพเดณเตเด•เดณเดฟเตฝ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเดšเตเดšเต - เดธเตเดฑเตเดฑเดพเตปเดกเดฟเตฝ เด…เดตเตผ เดจเดฟเดฒเดตเดฟเดฒเต† เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต, เด‡เดจเตเดฑเต‡เตบเดทเดฟเดชเตเดชเตเด•เดณเตเด‚ เดœเต‹เดฒเดฟเดฏเตเด‚ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดคเต, เด•เตเดตเดฟเดธเตเด•เดณเตเด‚ เดšเต†เดฑเดฟเดฏ เดฎเดคเตเดธเดฐเด™เตเด™เดณเตเด‚ เดจเดŸเดคเตเดคเดฟ, เด•เต‚เดŸเดพเดคเต† เดจเดฒเตเดฒ เดธเดฎเตเดฎเดพเดจเด™เตเด™เตพ เดจเดฑเตเด•เตเด•เต†เดŸเตเดชเตเดชเตเด‚ เดจเดŸเดคเตเดคเดฟ. เด…เดคเต‡เดธเดฎเดฏเด‚, เดšเดฟเดฒ เด•เดฎเตเดชเดจเดฟเด•เตพ เด…เดญเดฟเดฎเตเด–เดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดฐเด‚เดญ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เดพเตป เดชเต‹เดฒเตเด‚ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดคเต, เด‡เดคเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เด•เต‡เตพเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดตเดฐเตเดจเตเดจเดตเตผเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚.

เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เดณเตเดŸเต† เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ

เดฐเดฃเตเดŸเตเดฆเดฟเดตเดธเดตเตเด‚ เดžเด™เตเด™เตพ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต. เดšเดฟเดฒ เดธเดฎเดฏเด™เตเด™เดณเดฟเตฝ เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต - เด‡เดŸเดตเต‡เดณเด•เดณเดฟเตฝ เดจเต‡เดŸเดฟเดฏ เด…เดฑเดฟเดตเต เดตเดฟเดญเดœเดฟเด•เตเด•เดพเดจเตเด‚ เด•เตˆเดฎเดพเดฑเดพเดจเตเด‚ เดžเด™เตเด™เตพ เดธเดฎเตเดฎเดคเดฟเดšเตเดšเต. เด…เด™เตเด™เดจเต†เดฏเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เดชเดฒเดคเตเด‚ เดตเดฟเดŸเตเดŸเตเดชเต‹เดฏเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเต. เดžเด™เตเด™เตพเด•เตเด•เต เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏเดฟ เดคเต‹เดจเตเดจเดฟเดฏ เดšเดฟเดฒ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เดณเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดตเดฟเดŸเต† เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต

เด•เด‚เดชเตˆเดฒเตผ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เดณเตเดŸเต† เดชเตเดฐเดฟเดธเดคเตเดคเดฟเดฒเต‚เดŸเต† C++ เดฒเต† เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ, เดฑเต‹เดฎเตป เดฑเตเดธเดฏเต‡เดตเต

C++ เดฑเดทเตเดฏ: เด…เดคเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเดšเตเดšเต
เดจเดฟเดจเตเดจเต เดธเตเดฒเตˆเดกเต เดšเต†เดฏเตเดฏเตเด• เด…เดตเดคเดฐเดฃเด™เตเด™เตพ

เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†, LLVM เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เดณเต‹เดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดฑเต‹เดฎเตป เดจเต‹เด•เตเด•เดฟ. เด…เดคเต‡ เดธเดฎเดฏเด‚, เด…เดตเดฐเตเดŸเต† เดœเต‹เดฒเดฟเดฏเดฟเตฝ Clang เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดคเดตเตผเด•เตเด•เต, เด•เต‹เดกเต เดŽเด™เตเด™เดจเต† เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเดฟเดจเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดšเดฟเดฒ เด†เดถเดฏเด™เตเด™เตพ เดจเตฝเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด•เด‚เดชเตˆเดฒเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด…เดจเตเดฌเดจเตเดง เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต†เดฏเตเด‚ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดชเดฐเดธเตเดชเดฐเด‚ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเดฒเตเด‚ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เด’เดคเตเดคเตเดšเต‡เดฐเตเดจเตเดจเดคเดฟเดจเดพเดฒเตเด‚ เด‡เดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดฟเดจเดพเตฝ, เด’เดฐเต เด…เดชเดตเดพเดฆเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เด’เดฐเตเดชเดพเดŸเต เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: เดจเดฟเดฒเดตเดฟเดฒเต† เดคเดฒเดคเตเดคเดฟเตฝ เดนเดพเตปเดกเตโ€Œเดฒเดฟเด‚เด—เต เด•เต‹เดกเต (เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ) เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเต—เดœเดจเตเดฏ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดตเดฟเดณเดฟเดšเตเดšเต เดธเตเดฑเตเดฑเดพเด•เตเด•เต เด‰เดฏเตผเดจเตเดจเดคเต เดธเตเดชเดฟเตป เด…เดชเตเดชเต เดšเต†เดฏเตเดฏเตเด•. เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ เดตเดฐเตเดคเตเดคเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เด•เต‹เดณเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด•เด‚เดชเตˆเดฒเตผ เด…เดงเดฟเด• เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเต‡เด•เตเด•เต เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เด’เดดเดฟเดตเดพเด•เตเด•เตฝ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด‰เดฏเตผเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเด‚. เด“เดตเตผเดนเต†เดกเต เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด’เดดเดฟเดตเดพเด•เตเด•เตฝ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เต‹เดกเต เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เดงเดฟเด•" เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดฏเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต LLVM-เดจเต เดจเดฟเดฐเดตเดงเดฟ เดนเตเดฏเต‚เดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต เด‰เดฃเตเดŸเต.

เดธเตเดชเต€เด•เตเด•เตผ เด…เดตเดฏเดฟเตฝ เด’เดฐเต เดกเดธเดจเต‹เดณเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเตเด‚ เดˆ เดฐเต€เดคเดฟเด•เตพ เดฌเดพเดงเด•เดฎเดฒเตเดฒเดพเดคเตเดค เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเตเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เด™เตเด™เดจเต†, เดฑเต‹เดฎเตป เดฑเตเดธเดฏเต‡เดตเต, เด’เดดเดฟเดตเดพเด•เตเด•เตฝ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เต‹เดกเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดชเต‚เดœเตเดฏเด‚ เด“เดตเตผเดนเต†เดกเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒเต†เดจเตเดจ เดจเดฟเด—เดฎเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เดณเต† เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด‰เดชเดฆเต‡เดถเด‚ เดจเตฝเด•เตเดจเตเดจเต:

  • เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดคเดคเตเดตเดคเตเดคเดฟเตฝ เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต;
  • เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดธเดพเดงเตเดฏเดฎเดพเด•เตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚ เดŽเดฒเตเดฒเดพเดฏเดฟเดŸเดคเตเดคเตเด‚ noexcept (เด’เดชเตเดชเด‚ const) เดฎเต‹เดกเดฟเดซเดฏเดฑเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต, เด…เดคเตเดตเดดเดฟ เด•เด‚เดชเตˆเดฒเดฑเดฟเดจเต เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดชเตŠเดคเตเดตเต‡, เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดžเดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต‹ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต‹ เด†เดฏ เดตเต€เด•เตเดทเดฃเด‚ เดธเตเดชเต€เด•เตเด•เตผ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเดšเตเดšเต.

เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดธเตเดฒเตˆเดกเตเด•เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฒเดฟเด™เตเด•เดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต: [โ€œLLVM เด•เด‚เดชเตˆเดฒเตผ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เดณเตเดŸเต† เดฒเต†เตปเดธเดฟเดฒเต‚เดŸเต†เดฏเตเดณเตเดณ C++ เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพโ€]

เดœเดจเดฑเต‡เดฑเตเดฑเดฑเตเด•เตพ, เด•เตŠเดฑเต—เดŸเตเดŸเดฟเดจเตเด•เตพ, เดฎเดฑเตเดฑเต เดฎเดธเตเดคเดฟเดทเตเด•เดคเตเดคเต† เด…เตบเดฑเต‹เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฎเดงเตเดฐเด‚, เด†เดฆเดฟ เดทเดพเดตเดฟเดคเตเดคเต

C++ เดฑเดทเตเดฏ: เด…เดคเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเดšเตเดšเต
เดจเดฟเดจเตเดจเต เดธเตเดฒเตˆเดกเต เดšเต†เดฏเตเดฏเตเด• เด…เดตเดคเดฐเดฃเด™เตเด™เตพ

C++20-เดฒเต† เดชเตเดคเตเดฎเด•เตพเด•เตเด•เดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดˆ เด•เต‹เตบเดซเดฑเตปเดธเดฟเดฒเต† เดจเดฟเดฐเดตเดงเดฟ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เด…เดคเดฟเดจเตเดฑเต† เดตเตผเดฃเตเดฃเดพเดญเดฎเดพเดฏ เด…เดตเดคเดฐเดฃเดคเตเดคเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดถเต‡เด–เดฐเดฃ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฒเต‹เดœเดฟเด•เตเด•เดฟเดฒเตเดณเตเดณ (เดฒเต‚เดชเตเดชเต, เด•เต‹เตพเดฌเดพเด•เตเด•เตเด•เตพเด•เตเด•เต) เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดตเดฟเดธเตเดฎเดฐเดฃเต€เดฏเดฎเดพเดฃเต.

Adi Shavit เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดŽเดŸเตเดคเตเดคเตเด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต: เดจเดฟเดฒเดตเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏ เดฐเต€เดคเดฟเด•เตพ เดฎเตเดดเตเดตเตป เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‚เดŸเต†เดฏเตเด‚ เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต, เดšเดฟเดฒ เด†เดจเตเดคเดฐเดฟเด• เด‡เดจเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เด…เดตเดธเตเดฅเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดจเด‚ เดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เต‹เตพเดฌเดพเด•เตเด•เตเด•เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด…เดต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด•เต‹เตพเดฌเดพเด•เตเด•เต เดนเต†เตฝ เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด…เดธเตเด–เด•เดฐเดฎเดพเดฏ เดชเดพเตผเดถเตเดตเดซเดฒเด™เตเด™เตพ เดงเดพเดฐเดพเดณเด‚ เด‰เดฃเตเดŸเต) . เด†เดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด…เดตเดฏเดฟเตฝ เดชเต‹เดฒเตเด‚ เดŽเดฒเตเดฒเดพเด‚ เด…เดคเตเดฐ เดธเตเด—เดฎเดฎเดฒเตเดฒ: เดชเตŠเดคเตเดตเดพเดฏ เดŽเตปเดŸเตเดฐเดฟ, เดŽเด•เตเดธเดฟเดฑเตเดฑเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ (เด†เดฐเด‚เดญเด‚ โ†’ เด…เดตเดธเดพเดจเด‚ เดตเต‡เดดเตเดธเดธเต rbegin โ†’ เดฑเต†เตปเดกเตเด‚ เดฎเดฑเตเดฑเตเด‚), เดžเด™เตเด™เตพ เดŽเดคเตเดฐเดจเต‡เดฐเด‚ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒ? C++20 เดฎเตเดคเตฝ, เดˆ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต!

เด†เดฆเตเดฏ เด“เดชเตเดทเตป: เดถเตเดฐเต‡เดฃเดฟเด•เตพ. เด‡เดฑเตเดฑเดฑเต‡เดฑเตเดฑเดฑเตเด•เตพ เดชเตŠเดคเดฟเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เด’เดฐเต เด†เดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเดจเตเด‚ เด…เดตเดธเดพเดจเดคเตเดคเดฟเดจเตเด‚ เด’เดฐเต เดชเตŠเดคเต เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดฒเดญเดฟเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เดฐเดšเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเตเด‚ เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚. เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดŽเดฒเตเดฒเดพเด‚ เด…เดคเตเดฐ เดธเตเด—เดฎเดฎเดฒเตเดฒ: เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเตฝ เดฒเต‹เดœเดฟเด•เตเด•เดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด†เดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด‡เดคเต เด•เต‹เดกเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เดกเต€เดฌเด—เต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เตเด‚.

C++ เดฑเดทเตเดฏ: เด…เดคเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเดšเตเดšเต
เดจเดฟเดจเตเดจเต เดธเตเดฒเตˆเดกเต เดšเต†เดฏเตเดฏเตเด• เด…เดตเดคเดฐเดฃเด™เตเด™เตพ

เดถเดฐเดฟ, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, C++20 เด•เต‹เดฑเต‚เดŸเตเดŸเต€เดจเตเด•เตพ เดšเต‡เตผเดคเตเดคเต (เดชเตˆเดคเตเดคเดฃเดฟเดฒเต† เดœเดจเดฑเต‡เดฑเตเดฑเดฑเตเด•เดณเต‹เดŸเต เดธเดพเดฎเตเดฏเดฎเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ): เด’เดฐเต เด‡เดจเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เด…เดตเดธเตเดฅ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดฟเด•เตเด•เตŠเดฃเตเดŸเต เดจเดฟเดฒเดตเดฟเดฒเต† เดšเดฟเดฒ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดจเตฝเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเด•เตเด•เดพเด‚. เด…เดคเดฟเดจเดพเตฝ, เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‹เดฑเต‚เดŸเตเดŸเต€เดจเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดฏเตเด•เตเดคเดฟเด•เดณเตเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดŽเดจเตเดจเดพเตฝ เดคเตˆเดฒเดคเตเดคเดฟเตฝ เด’เดฐเต เดˆเดšเตเดšเดฏเตเดฃเตเดŸเต: เด‡เดชเตเดชเต‹เตพ เด…เดต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด•เด‚เดชเตˆเดฒเดฑเตเด•เตพ เดญเดพเด—เดฟเด•เดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเตเดณเตเดณเต‚, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเตเดฐ เดญเด‚เด—เดฟเดฏเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ: เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฑเดซเดฑเตปเดธเตเด•เดณเตเด‚ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดตเดธเตเดคเตเด•เตเด•เดณเตเด‚ เด•เตŠเดฑเต‚เดŸเตเดŸเต€เดจเตเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดคเตเดตเดฐเต† เดตเดฟเดฒเดฎเดคเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด•เต‚เดŸเดพเดคเต†, coroutines เดŽเดจเตเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต เดšเดฟเดฒ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต, constexpr เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ, เด•เตบเดธเตโ€ŒเดŸเตเดฐเด•เตโ€ŒเดŸเดฑเตเด•เตพ/เดกเดฟเดธเตเดŸเตเดฐเด•เตเดฑเตเดฑเดฑเตเด•เตพ, เดฎเต†เดฏเดฟเตป เดŽเดจเตเดจเดฟเดต เดˆ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ.

เด…เดคเดฟเดจเดพเตฝ, เดกเดพเดฑเตเดฑเดพ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฒเต‹เดœเดฟเด•เตเด•เดฟเดจเตเดฑเต† เดฒเดพเดณเดฟเดคเตเดฏเด‚ เด•เตŠเดฃเตเดŸเต เด•เตŠเดฑเต—เดŸเตเดŸเต€เดจเตเด•เตพ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดญเดพเด—เด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดตเดฏเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดจเดŸเดชเตเดชเดพเด•เตเด•เดฒเตเด•เตพ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เตพ:

Yandex.Taxi, Anton Polukhin เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ C++ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดŽเดจเตเดฑเต† เดชเตเดฐเตŠเดซเดทเดฃเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ, เดšเดฟเดฒเดชเตเดชเต‹เตพ เดŽเดจเดฟเด•เตเด•เต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดธเดนเดพเดฏเด•เดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸเดฟ เดตเดฐเตเด‚: เดšเดฟเดฒ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดŸเต† เด†เดจเตเดคเดฐเดฟเด• เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเดจเตเด‚ API-เดฏเตเด•เตเด•เตเด‚ เด‡เดŸเดฏเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดฑเดพเดชเตเดชเตผ, เดฒเต‹เด—เดฟเด‚เด—เต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดพเดดเตเดธเดฟเด‚เด—เต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด…เดงเดฟเด• เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ RuNet-เดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เดšเดฟเดฒ เดธเต‡เดตเดจเด™เตเด™เดณเดฟเตฝ เดˆ เด˜เดŸเด•เด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฒเต‹? เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเตฝ เดŸเต†เดฑเดพเดฌเตˆเดฑเตเดฑเตเด•เตพ เดฎเดพเดคเตเดฐเด‚ เดฒเต‹เด—เตเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดฐเตเด‚! เด…เดชเตเดชเต‹เตพ เด“เดฐเต‹ เดฎเดฟเดฒเตเดฒเดฟเดธเต†เด•เตเด•เตปเดกเตเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดตเดฟเดตเดฟเดง เดคเดจเตเดคเตเดฐเด™เตเด™เตพ เด…เดตเดฒเด‚เดฌเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต - เด†เดจเตเดฑเตบ เดชเตŠเดฒเตเด–เดฟเตป เด…เดตเดฐเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต.

เด’เดฐเตเดชเด•เตเดทเต‡ เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเต‹เดฏเดฟเดจเตเดฑเตผ-เดŸเต-เด‡เด‚เดชเตเดฒเดฟเดฎเต†เดจเตเดฑเต‡เดทเตป (pimpl) เดชเดพเดฑเตเดฑเต‡เตบ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏเดคเดพเดฃเต. 

#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_; 
};

เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด†เดฆเตเดฏเด‚ เดžเดพเตป เดฌเดพเดนเตเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต† เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เดซเดฏเดฒเตเด•เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต - เด‡เดคเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเด‚, เด•เต‚เดŸเดพเดคเต† เดธเดพเดงเตเดฏเดฎเดพเดฏ เดจเดพเดฎ เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดฎเดฑเตเดฑเต เดธเดฎเดพเดจ เดชเดฟเดถเด•เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดฐเด•เตเดทเดฟเด•เตเด•เดพเด‚. 

เดถเดฐเดฟ, เดžเด™เตเด™เตพ .cpp เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต #include เดจเต€เด•เตเด•เดฟ: เดชเตŠเดคเดฟเดžเตเดž API เดฏเตเดŸเต† เดซเต‹เตผเดตเต‡เดกเต เดกเดฟเด•เตเดฒเดฑเต‡เดทเดจเตเด‚ 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_; 
};

เด’เดฐเต‡เดฏเตŠเดฐเต เดชเตเดฐเดถเตเดจเด‚: เด“เดฐเต‹ เดฑเดพเดชเตเดชเดฑเดฟเดจเตเด‚ เดตเดฒเตเดชเตเดชเดตเตเด‚ เดตเดฟเดจเตเดฏเดพเดธเดตเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต - เดจเดฎเตเด•เตเด•เต เดŽเดจเตเดจ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† pimpl เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚, เดšเดฟเดฒ เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•, เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฃเต†เดจเตเดจเต เดŠเดนเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดกเดฟเดธเตเดŸเตเดฐเด•เตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดšเต†เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•. : 

~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"
    ); 
}

เดกเดฟเดธเตเดŸเตเดฐเด•เตเดฑเตเดฑเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ T เด‡เดคเดฟเดจเด•เด‚ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดˆ เด•เต‹เดกเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚, เด•เต‚เดŸเดพเดคเต† เด•เด‚เดชเตˆเดฒเต‡เดทเตป เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เด…เดคเต เดชเดฟเดถเด•เตเด•เดณเดพเดฏเดฟ เดจเตฝเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฒเตเดชเตเดชเดตเตเด‚ เดตเดฟเดจเตเดฏเดพเดธ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚. เด…เด™เตเด™เดจเต†, เด’เดฐเต เด…เดงเดฟเด• เด•เด‚เดชเตˆเดฒเต‡เดทเตป เดฑเดฃเตเดฃเดฟเดจเตเดฑเต† เดšเต†เดฒเดตเดฟเตฝ, เดชเตŠเดคเดฟเดžเตเดž เด•เตเดฒเดพเดธเตเด•เดณเตเดŸเต† เดšเดฒเดจเดพเดคเตเดฎเด• เด…เดฒเต‹เด•เตเด•เต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เดฐเด•เตเดทเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดจเดŸเดชเตเดชเดพเด•เตเด•เดฒเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต .cpp เดซเดฏเดฒเดฟเตฝ API เดฎเดฑเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดชเตเดฐเต‹เดธเดธเตเดธเตผ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด•เต‚เดŸเตเดคเตฝ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เด’เดฐเต เดกเดฟเดธเตˆเตป เดจเต‡เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดฒเต‹เด—เดฟเด‚เด—เตเด‚ เดชเดพเดดเตโ€Œเดธเดฟเด‚เด—เตเด‚ เด…เดคเตเดฐ เด†เด•เตผเดทเดฃเต€เดฏเดฎเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดˆ เด…เดตเดฒเต‹เด•เดจเดคเตเดคเดฟเตฝ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดธเตเดฒเตˆเดกเตเด•เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฒเดฟเด™เตเด•เดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต: ["เดŸเดพเด•เตเดธเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ C++ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ"]

เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เต‹เดกเต เดกเตเดฐเตˆ เด†เดฏเดฟ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด†เดงเตเดจเดฟเด• เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเดฟเดฆเตเดฏเด•เตพ, Bjรถrn Fahller

เดˆ เดธเด‚เดญเดพเดทเดฃเดคเตเดคเดฟเตฝ, เด†เดตเตผเดคเตเดคเดฟเดšเตเดšเตเดณเตเดณ เด…เดตเดธเตเดฅ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเดŸเต† เดถเตˆเดฒเต€เดชเดฐเดฎเดพเดฏ เดชเดฟเดดเดตเดฟเดจเต†เดคเดฟเดฐเต† เดชเต‹เดฐเดพเดŸเตเดจเตเดจเดคเดฟเดจเต Bjรถrn Fahller เดตเดฟเดตเดฟเดง เดฎเดพเตผเด—เด™เตเด™เตพ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต:

assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);

เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เดถเดฌเตเดฆเด‚? เดธเดฎเต€เดชเด•เดพเดฒ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเตเด•เดณเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดš เดจเดฟเดฐเดตเดงเดฟ เดถเด•เตเดคเดฎเดพเดฏ C++ เดŸเต†เด•เตเดจเดฟเด•เตเด•เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดชเต†เตผเดซเต‹เดฎเตปเดธเต เดชเต†เดจเดพเตฝเดฑเตเดฑเดฟเดฏเดฟเดฒเตเดฒเดพเดคเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต‡ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดญเด‚เด—เดฟเดฏเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•:   

assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));

เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเดคเตเดค เดŽเดฃเตเดฃเด‚ เดšเต†เด•เตเด•เตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป, เดจเดฟเด™เตเด™เตพ เด‰เดŸเดจเดŸเดฟ เดตเต‡เดฐเดฟเดฏเดพเดกเดฟเด•เต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเตเด‚ เดซเต‹เตพเดกเต เดŽเด•เตเดธเตเดชเตเดฐเดทเดจเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. enum เดจเตเดฑเต† state_type เดŽเดฒเดฎเต†เดจเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดคเตเดฒเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด•เดฐเตเดคเตเด•. เด’เดฐเต เดนเต†เตฝเดชเตเดชเตผ เดซเด‚เด—เตโ€Œเดทเตป เดŽเดดเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด†เดฆเตเดฏเด‚ เดฎเดจเดธเตเดธเดฟเตฝ เดตเดฐเตเดจเตเดจเดคเต_เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚_เด“เดซเต:


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)); 

เดจเต‹เตบ-เดŸเตˆเดชเตเดชเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดธเดพเดนเดšเดฐเตเดฏเด‚ เด…เตฝเดชเตเดชเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚. เด…เดตเดฐเตเดŸเต† เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต†, เดžเด™เตเด™เตพ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต‡เด•เตเด•เต enum-เดจเตเดฑเต† เดŽเดฃเตเดฃเดพเดตเตเดจเตเดจ เด˜เดŸเด•เด™เตเด™เตพ เดฎเดพเดฑเตเดฑเตเด‚: 

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 เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดดเดฟเดฏเดฟเตฝ, no_unique_address เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด‚ (C++20) เดฒเดพเด‚เดก เดซเด‚เด—เตเดทเดจเตเด•เดณเดฟเดฒเต† เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ (C++20) เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. (เด…เดคเต†, เด‡เดชเตเดชเต‹เตพ เดฒเดพเด‚เดก เดตเดพเด•เตเดฏเด˜เดŸเดจ เด“เตผเด•เตเด•เดพเตป เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต - เด‡เดต เดŽเดฒเตเดฒเดพ เดคเดฐเดคเตเดคเดฟเดฒเตเดฎเตเดณเตเดณ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดจเดพเดฒเต เดœเต‹เดกเดฟ เดชเดฐเดพเตปเดคเต€เดธเดฟเดธเตเด•เดณเดพเดฃเต.) เด•เตบเดธเตเดŸเตเดฐเด•เตโ€ŒเดŸเตผ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเดพเดฏเดฟ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด…เดจเตเดคเดฟเดฎ เดชเดฐเดฟเดนเดพเดฐเด‚ เดŽเดจเตเดฑเต† เด†เดคเตเดฎเดพเดตเดฟเดจเต† เดถเดฐเดฟเด•เตเด•เตเด‚ เดšเต‚เดŸเดพเด•เตเด•เตเดจเตเดจเต, เดฒเดพเด‚เดกเดฏเตเดŸเต† เดฎเดฟเด•เดšเตเดš เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเต† เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เดŽเดจเตเดจ เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เด•เดพเตฝเด•เตเด•เตเดฒเดธเต.

เด…เดตเดธเดพเดจเด‚, เด…เดคเต เดฎเดฟเดจเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต:

  • เดฒเดพเด‚เดกเด•เตพ เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ constexpr เด†เดฃเต†เดจเตเดจเต เด“เตผเด•เตเด•เตเด•; 
  • เดจเดฎเตเด•เตเด•เต เดคเดฟเด•เดžเตเดž เดซเต‹เตผเดตเต‡เดกเดฟเด‚เด—เต เดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดฒเดพเด‚เดก เด•เตเดฒเต‹เดทเดฑเดฟเดฒเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดชเดพเดฏเตเด•เตเด•เตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเต เด…เดคเดฟเดจเตเดฑเต† เดตเตƒเดคเตเดคเดฟเด•เต†เดŸเตเดŸ เดตเดพเด•เตเดฏเด˜เดŸเดจ เดจเต‹เด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเด‚;
  • เด•เด‚เดชเตˆเดฒเดฑเดฟเดจเต เดธเต‹เดชเดพเดงเดฟเด•เดฎเดพเดฏ เดจเต‹เดŽเด•เตเดธเต†เดชเตเดฑเตเดฑเต เด‰เดณเตเดณ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด•เต‚เดŸเตเดคเตฝ เด…เดตเดธเดฐเด™เตเด™เตพ เดจเตฝเด•เดพเด‚; 
  • เดฒเดพเด‚เดกเดพเดธเดฟเดจเตเดฑเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดฑเดฟเดŸเตเดŸเต‡เตบ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพเด•เตเด•เต เดจเดจเตเดฆเดฟ, เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจ เดชเดฟเดถเด•เต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดจเดฎเตเด•เตเด•เต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเด‚. เด‡เดคเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดซเด‚เด—เตโ€Œเดทเดจเต† เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด•เต‚เดŸเตเดคเตฝ เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดจเดŸเดคเตเดคเดพเตป เด•เด‚เดชเตˆเดฒเดฑเดฟเดจเต† เดชเตเดฐเต‡เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚ - เดŸเตˆเดชเตเดชเต เดšเต†เด•เตเด•เดฟเด‚เด—เต เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ. 

เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพเด•เตเด•เต, เดชเตเดฐเดญเดพเดทเดฃ เดธเดพเดฎเด—เตเดฐเดฟเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•: 

เดžเด™เตเด™เดณเตเดŸเต† เด‡เด‚เดชเตเดฐเดทเดจเตเด•เตพ

C++ เดฑเดทเตเดฏเดฏเดฟเดฒเต† เดžเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏ เดชเด™เตเด•เดพเดณเดฟเดคเตเดคเด‚ เด…เดคเดฟเดจเตเดฑเต† เดคเต€เดตเตเดฐเดคเดฏเดพเตฝ เด…เดตเดฟเดธเตเดฎเดฐเดฃเต€เดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดชเดฐเดฟเดถเต€เดฒเดจเดคเตเดคเดฟเดจเตเด‚ เดคเดคเตเดธเดฎเดฏ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเด‚ เด‡เดŸเดฏเดฟเดฒเตเดณเตเดณ เดฒเตˆเตป เดเดคเดพเดฃเตเดŸเต เด…เดฆเตƒเดถเตเดฏเดฎเดพเดฏ เด’เดฐเต เด†เดคเตเดฎเดพเตผเดคเตเดฅ เดธเด‚เดญเดตเดฎเดพเดฏเดฟ เดŽเดจเดฟเด•เตเด•เต C++ เดฑเดทเตเดฏเดฏเตเดŸเต† เดฎเดคเดฟเดชเตเดชเต เดฒเดญเดฟเดšเตเดšเต. เดชเตเดฐเดธเด‚เด—เด•เดฐเตเดŸเต† เดฎเต‚เดกเต เดฎเตเดคเตฝ เด‡เดตเดจเตเดฑเต เดชเดพเตผเดŸเตเดฃเตผเดฎเดพเดฐเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดคเตเดธเดฐเด™เตเด™เตพ เดตเดฐเต† เดŽเดฒเตเดฒเดพเด‚ เดšเต‚เดŸเต‡เดฑเดฟเดฏ เดšเตผเดšเตเดšเด•เตพเด•เตเด•เต เดธเดนเดพเดฏเด•เดฎเดพเดฃเต. เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เด…เดŸเด™เตเด™เตเดจเตเดจ เด•เต‹เตบเดซเดฑเตปเดธเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚, C++ เด•เดฃเตเดŸเตเดชเดฟเดŸเตเดคเตเดคเด™เตเด™เตพ, เดตเดฒเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด•เต‡เดธเต เดชเด เดจเด™เตเด™เตพ, เดชเตเดฐเดคเตเดฏเดฏเดถเดพเดธเตเดคเตเดฐเดชเดฐเดฎเดพเดฏ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดพ เดชเดฐเดฟเด—เดฃเดจเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเตพเดชเตเดชเต†เดŸเต† เดตเดฟเดชเตเดฒเดฎเดพเดฏ เดตเดฟเดทเดฏเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด‡เดตเดจเตเดฑเดฟเดจเตเดฑเต† เดธเดพเดฎเต‚เดนเดฟเด• เด˜เดŸเด•เดคเตเดคเต† เด…เดตเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดจเตเดฏเดพเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด‡เดคเต C++ เดจเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดญเดพเดทเดพ เดคเดŸเดธเตเดธเด™เตเด™เดณเต† เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดคเตเดคเดฐเดฎเตŠเดฐเต เดชเดฐเดฟเดชเดพเดŸเดฟเดฏเดฟเตฝ เดชเด™เตเด•เต†เดŸเตเด•เตเด•เดพเตป เด…เดตเดธเดฐเด‚ เดจเตฝเด•เดฟเดฏเดคเดฟเดจเต เด•เต‹เตบเดซเดฑเตปเดธเต เดธเด‚เด˜เดพเดŸเด•เตผเด•เตเด•เต เดžเด™เตเด™เตพ เดจเดจเตเดฆเดฟ เดชเดฑเดฏเตเดจเตเดจเต!
C++ เดฑเดทเตเดฏเดฏเตเดŸเต† เดญเต‚เดคเด•เดพเดฒเดคเตเดคเต†เดฏเตเด‚ เดตเตผเดคเตเดคเดฎเดพเดจเดคเตเดคเต†เดฏเตเด‚ เดญเดพเดตเดฟเดฏเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดธเด‚เด˜เดพเดŸเด•เดฐเตเดŸเต† เดชเต‹เดธเตเดฑเตเดฑเต เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เดพเด‚ JUG Ru เดฌเตเดฒเต‹เด—เดฟเตฝ.

เดตเดพเดฏเดฟเดšเตเดšเดคเดฟเดจเต เดจเดจเตเดฆเดฟ, เดžเด™เตเด™เดณเตเดŸเต† เดธเด‚เดญเดตเด™เตเด™เดณเตเดŸเต† เดชเตเดจเดฐเดพเด–เตเดฏเดพเดจเด‚ เดธเดนเดพเดฏเด•เดฐเดฎเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•