{"id":301185,"date":"2020-04-02T21:00:13","date_gmt":"2020-04-02T21:00:13","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=301185"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=301185","title":{"rendered":"\u041f\u0435\u0440\u0432\u043e\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/495396\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qd\/ja\/kc\/qdjakcxd4173w_juzv5fx3bf0_o.jpeg\"><br \/>  \u0420\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u043e\u0432\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0421++20 \u2014 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0430\u043c\u0438.<br \/>  <a href=\"https:\/\/en.wikipedia.org\/wiki\/Concepts_(C%2B%2B)\" rel=\"nofollow\">\u041a\u043e\u043d\u0446\u0435\u043f\u0442\u044b <\/a>(\u0438\u043b\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D1%8F_(C%2B%2B)\" rel=\"nofollow\">\u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438<\/a>, \u043a\u0430\u043a \u043f\u0438\u0448\u0435\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u0412\u0438\u043a\u0438) \u2014 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0444\u0438\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e. <\/p>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e \u0421++20 \u2014 \u0432 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u043e, \u043d\u0430 \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u044b. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0431\u044b\u043b\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0421 \u044d\u0442\u0438\u043c \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u0445\u0430\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0430\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043d\u0435 \u0445\u043e\u0447\u0443 (\u0445\u043e\u0442\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f)<\/p>\n<p>  \u041a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u043d\u0435\u0434\u043e\u0440\u0430\u0437\u0443\u043c\u0435\u043d\u0438\u0435. \u041e\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u043e\u0449\u043d\u0443\u044e. \u0418 \u0432\u043e\u0442, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0441 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044f \u0441\u0442\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435.<\/p>\n<p>  \u0421\u043a\u0430\u0436\u0443 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0432 \u0448\u043e\u043a\u0435:) \u0421++ \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u043d\u043e \u0442\u0443\u0442 \u0445\u043e\u0442\u044f-\u0431\u044b \u0435\u0441\u0442\u044c \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435: \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041c\u0435\u0442\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u043b\u0438, \u0430 \u043d\u0435 \u0437\u0430\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u0430. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u044f\u0437\u044b\u043a\u0430, \u0431\u044b\u043b\u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u044d\u0442\u043e \u00ab\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043c\u0438\u0440\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0436\u0435 \u2014 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u0418, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0447\u0435\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439? \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f\u2026 <br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u041e\u0431\u0449\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u041a\u043e\u043d\u0446\u0435\u043f\u0442 \u2014 \u043d\u043e\u0432\u0430\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0423 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0430 \u0435\u0441\u0442\u044c \u0438\u043c\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0442\u0435\u043b\u043e \u2014 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 (\u0442.\u0435. \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u043e\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438) \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0435\u0435 \u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0430. \u0412\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">template&lt;int I&gt;  concept Even = I % 2 == 0;    template&lt;typename T&gt; concept FourByte = sizeof(T)==4;<\/code><\/pre>\n<p>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0435 constexpr-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 bool:  <\/p>\n<pre><code class=\"cpp\">template&lt;int I&gt; constexpr bool EvenX = I % 2 == 0;   template&lt;typename T&gt; constexpr bool FourByteX = sizeof(T)==4;<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445:  <\/p>\n<pre><code class=\"cpp\">bool b1 = Even&lt;2&gt;; <\/code><\/pre>\n<h2>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432 \u2014 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 typename \u0438\u043b\u0438 class \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445. \u041a\u0430\u043a \u043c\u0435\u0442\u0430\u0442\u0438\u043f\u044b (\u00ab\u0442\u0438\u043f\u044b \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0432\u00bb). \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f.  <\/p>\n<pre><code class=\"cpp\">template&lt;FourByte T&gt; void foo(T const &amp; t) {}<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 int, \u0442\u043e \u043a\u043e\u0434 \u0432 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f; \u0430 \u0435\u0441\u043b\u0438 double, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u043e \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. \u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043e\u043a.<\/p>\n<h2>requires<\/h2>\n<p>  \u042d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u00ab\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435\u00bb \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0421++20, \u0438\u043c\u0435\u044e\u0449\u0435\u0435 \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: requires clause \u0438 requires expression. \u041a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0434\u0430\u043b\u0435\u0435, \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043d\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0435.<\/p>\n<h2>requires expression<\/h2>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c requires expression. \u0418\u0434\u0435\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u0430: \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u0438\u043c\u0435\u0435\u0442 \u0431\u043b\u043e\u043a \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u043a\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c. \u041f\u0440\u0430\u0432\u0434\u0430, \u043a\u043e\u0434 \u0442\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d <b>\u043d\u0435 \u043d\u0430 \u0421++, \u0430 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0431\u043b\u0438\u0437\u043a\u043e\u043c \u043a \u0421++, \u043d\u043e \u0438\u043c\u0435\u044e\u0449\u0435\u043c \u0441\u0432\u043e\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/b> (\u044d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0421++ \u043a\u043e\u0434).<br \/>  \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u2014 requires expression \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0438\u043d\u0430\u0447\u0435 false. \u0421\u0430\u043c \u043a\u043e\u0434 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u0434\u043e\u043d\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 sizeof \u0438\u043b\u0438 decltype. <\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u043b\u043e\u0432\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043d\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f:  <\/p>\n<pre><code class=\"cpp\">bool b = requires { 3.14 &gt;&gt; 1; };<\/code><\/pre>\n<p>  \u0430 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430:  <\/p>\n<pre><code class=\"cpp\">template&lt;typename T&gt; constexpr bool Shiftable = requires(T i) { i&gt;&gt;1; };<\/code><\/pre>\n<p>  \u0418 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c  <\/p>\n<pre><code class=\"cpp\">bool b1 = Shiftable&lt;int&gt;; \/\/ true bool b2 = Shiftable&lt;double&gt;; \/\/ false<\/code><\/pre>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 requires expression \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u0442\u0438\u043f\u0435. \u0412\u0435\u0441\u044c\u043c\u0430 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0435\u0439\u0441.<br \/>  template concept Machine = <br \/>   requires(T m) { \/\/ \u043b\u044e\u0431\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f `m` \u0442\u0438\u043f\u0430, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443 Machine<br \/>   m.start(); \/\/ \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u043c\u0435\u0442\u043e\u0434 `m.start()` <br \/>   m.stop(); \/\/ \u0438 \u043c\u0435\u0442\u043e\u0434 `m.stop()`<br \/>  }; <br \/>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043a\u043e\u0434\u0435 (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430), \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u0432 \u043a\u0440\u0443\u0433\u043b\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 requires expression. \u041f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<h2>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 requires<\/h2>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u0438\u044f requires-\u043a\u043e\u0434\u0430 \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0421++. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441: \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438, \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c \u0442\u0438\u043f. \u041f\u0440\u0438\u0447\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0438\u043f\u043e\u0432 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a int:  <\/p>\n<pre><code class=\"cpp\">requires(T v, int i) {   { v.f(i) } -&gt; std::convertible_to&lt;int&gt;; }  <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0432\u0435\u043d int:  <\/p>\n<pre><code class=\"cpp\">requires(T v, int i) {   { v.f(i) } -&gt; std::same_as&lt;int&gt;;  }  <\/code><\/pre>\n<p>  (std::same_as \u0438 std::convertible_to \u044d\u0442\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438).<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0442\u0438\u043f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u043f\u043e\u0439\u043c\u0435\u0442 \u0447\u0442\u043e \u043e\u0442 \u043d\u0435\u0433\u043e \u0445\u043e\u0442\u044f\u0442 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c.<\/p>\n<h2>requires \u0432\u043d\u0443\u0442\u0440\u0438 requires<\/h2>\n<p>  \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e requires \u0438\u043c\u0435\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 requires. \u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 requires-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u0443\u0436\u0435 \u0431\u0435\u0437 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a) \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u043d\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c, \u0430 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e true \u0438\u043b\u0438 false. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f false, \u0442\u043e \u0438 \u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f false (\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f). \u041e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434:  <\/p>\n<pre><code class=\"cpp\">requires {    expression;         \/\/ expression is valid   requires predicate; \/\/ predicate is true };<\/code><\/pre>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0438\u043f\u043e\u0432 (type traits). \u041f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">requires(Iter it) {   \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0434 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c (\u0447\u0442\u043e \u0434\u043b\u044f \u0442\u0438\u043f\u0430 Iter \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 * \u0438 ++)   *it++;     \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u044c - \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u043c   requires std::convertible_to&lt;decltype(*it++), typename Iter::value_type&gt;;     \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u044c - \u0441 \u0442\u0440\u0435\u0439\u0442\u043e\u043c   requires std::is_convertible_v&lt;decltype(*it++), typename Iter::value_type&gt;; }<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 requires-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u0434\u043e\u043c \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u043e requires-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0442\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u0432\u0441\u0451 \u0432 \u0446\u0435\u043b\u043e\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e requires) \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c  <\/p>\n<pre><code class=\"cpp\">requires (T v) {    requires (typename T::value_type x) { ++x; }; \/\/ \u044d\u0442\u043e \u0412\u042b\u0420\u0410\u0416\u0415\u041d\u0418\u0415 \u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442,  \t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u043e\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c! };  <\/code><\/pre>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0441 \u0434\u0432\u043e\u0439\u043d\u044b\u043c requires:  <\/p>\n<pre><code class=\"cpp\">requires (T v) {    requires requires (typename T::value_type x) { ++x; }; \/\/ \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e &quot;++x&quot; };  <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0432\u043e\u0442 \u0437\u0430\u0431\u0430\u0432\u043d\u0430\u044f escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 \u00abrequires\u00bb. <\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 requires \u2014 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 clause (\u0441\u043c. \u0434\u0430\u043b\u0435\u0435) \u0438 expression:  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires requires(T x, T y) { bool(x &lt; y); } bool equivalent(T const&amp; x, T const&amp; y) {   return !(x &lt; y) &amp;&amp; !(y &lt; x); };<\/code><\/pre>\n<h2>requires clause<\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u043b\u043e\u0432\u0430 requires \u2014 \u0434\u043b\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u042d\u0442\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043c\u0435\u043d \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e typename. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b:  <\/p>\n<pre><code class=\"cpp\">\/\/ \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f require template&lt;typename Cont&gt; \trequires Sortable&lt;Cont&gt; void sort(Cont&amp; container);  \/\/ \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u0430\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f require (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439) template&lt;typename Cont&gt; void sort(Cont&amp; container) requires Sortable&lt;Cont&gt;;  \/\/ \u0438\u043c\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e typename template&lt;Sortable Cont&gt; void sort(Cont&amp; container)  <\/code><\/pre>\n<p>  \u0412 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 requires \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u043e\u0432, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438.  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires is_standard_layout_v&lt;T&gt; &amp;&amp; is_trivial_v&lt;T&gt; void fun(T v);    int main() {   std::string s;     fun(1);  \/\/ ok   fun(s);  \/\/ compiler error }<\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, c\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u043a\u0430\u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438:  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires is_standard_layout_v&lt;T&gt; &amp;&amp; !is_trivial_v&lt;T&gt; void fun(T v); <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires !is_trivial_v&lt;T&gt; void fun(T v);\t<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u2014 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0442\u0430\u043a\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;    requires (bool)&amp;T::operator short unsigned int foo();<\/code><\/pre>\n<p>  \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a \u0447\u0435\u043c\u0443 \u043e\u0442\u043d\u0435\u0441\u0442\u0438 unsigned \u2014 \u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0438\u043b\u0438 \u043a \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 foo(). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0431\u0435\u0437 \u043a\u0440\u0443\u0433\u043b\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 requires clause \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u2014 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b true \u0438\u043b\u0438 false, \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0439 \u0442\u0438\u043f\u0430 bool \u0432\u0438\u0434\u0430 value, value, T::value, ns::trait::value, \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432 \u0432\u0438\u0434\u0430 Concept \u0438 requires expressions. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438:  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires (!is_trivial_v&lt;T&gt;) void fun(T v);<\/code><\/pre>\n<h2>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u043e\u0432 \u0432 requires clause<\/h2>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440.  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires is_trivial_v&lt;typename T::value_type&gt;  void fun(T v); <\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 requires \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442, \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0438\u0439 \u043e\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 value_type. \u0417\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0438\u043f int, \u0431\u0443\u0434\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u2014 \u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442; \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;   requires is_trivial_v&lt;typename T::value_type&gt;  void fun(T v) { std::cout &lt;&lt; &quot;1&quot;; }    template &lt;typename T&gt; void fun(T v) { std::cout &lt;&lt; &quot;2&quot;; }    int main() {   fun(1);  \/\/ displays: &quot;2&quot; }<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 require clause \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 false, \u043d\u043e \u0438 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c.<\/p>\n<p>  \u041a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0432\u043e\u043a\u0440\u0443\u0433 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u044b\u043c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 requires clause \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430. \u0422\u0430\u043a,   <\/p>\n<pre><code class=\"cpp\">requires is_trivial_v&lt;typename T::value_type&gt; <\/code><\/pre>\n<p>  \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u00ab\u0442\u0440\u0435\u0439\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u044b\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true\u00bb. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c  <\/p>\n<pre><code class=\"cpp\">!is_trivial_v&lt;typename T::value_type&gt; <\/code><\/pre>\n<p>  \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0431\u044b \u00ab\u0442\u0440\u0435\u0439\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 false\u00bb<br \/>  \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430 \u2014 \u041d\u0415(\u00ab\u0442\u0440\u0435\u0439\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u044b\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true\u00bb) == \u00ab\u0442\u0440\u0435\u0439\u0442 \u041d\u0415\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0438\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 false\u00bb \u2014 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u2014 \u0447\u0435\u0440\u0435\u0437 \u044f\u0432\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0430:  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt; concept value_type_valid_and_trivial    = is_trivial_v&lt;typename T::value_type&gt;;    template &lt;typename T&gt;   requires (!value_type_valid_and_trivial&lt;T&gt;) void fun(T v); <\/code><\/pre>\n<h2>\u041a\u043e\u043d\u044a\u044e\u043d\u043a\u0446\u0438\u044f \u0438 \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u044f<\/h2>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u044a\u044e\u043d\u043a\u0446\u0438\u0438 \u0438 \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0430\u0447\u0435, \u0447\u0435\u043c \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0421++.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430. <br \/>  \u043f\u0435\u0440\u0432\u044b\u0439 \u2014 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u0431\u0435\u0437 \u0441\u043a\u043e\u0431\u043e\u043a  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T, typename U&gt;   requires std::is_trivial_v&lt;typename T::value_type&gt; \t\t|| std::is_trivial_v&lt;typename U::value_type&gt; void fun(T v, U u); <\/code><\/pre>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u0441\u043e \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438  <\/p>\n<pre><code class=\"cpp\">template &lt;typename T, typename U&gt;   requires (std::is_trivial_v&lt;typename T::value_type&gt; \t\t || std::is_trivial_v&lt;typename U::value_type&gt;) void fun(T v); <\/code><\/pre>\n<p>  \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445. \u041d\u043e \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u043d\u0435 \u0434\u0432\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u00abrequires-\u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u0435\u0439\u00bb, \u0430 \u043e\u0434\u043d\u043e, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0418\u041b\u0418. <br \/>  \u042d\u0442\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u0434  <\/p>\n<pre><code class=\"cpp\">std::optional&lt;int&gt; oi {}; int i {}; fun(i, oi);<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u0430\u043c\u0438 int \u0438 std::optional.<br \/>  \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0438\u043f int::value_type \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439, \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f.<br \/>  \u041d\u043e \u0442\u0438\u043f optional::value_type \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439, \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u0440\u0435\u0439\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0430 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u0442\u043e\u0438\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0418\u041b\u0418, \u0442\u043e \u0432\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u0432 \u0446\u0435\u043b\u043e\u043c \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f.<br \/>  \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0442\u0438\u043f, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043e\u043d\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0438 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f. \u0412\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e.<\/p>\n<h2>\u0412 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043b \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u041d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f \u2014 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u0443\u0442\u0430\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u0418 \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f requires, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0443\u0442\u0430\u0435\u0442. \u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0442\u0430\u043a \u043c\u0430\u043b\u043e \u0441\u043b\u043e\u0432, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439?<br \/>  \u0418\u0434\u0435\u044f \u0441 \u043a\u043e\u0434\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u2014 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f. \u042d\u0442\u043e \u0434\u0430\u0436\u0435 \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u00ab\u043a\u0432\u0430\u0437\u0438-\u0446\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u0445. \u041d\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u0437\u0430\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432? \u0418\u041c\u0425\u041e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e.<br \/>  \u041d\u0435\u044f\u0432\u043d\u043e\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0439 \u00ab\u0438\u0441\u0442\u0438\u043d\u043d\u043e\/\u043b\u043e\u0436\u043d\u043e\u00bb \u0438 \u00ab\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f\/\u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb \u0432 \u043e\u0434\u043d\u0443 \u043a\u0443\u0447\u0443, \u0438 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u043a\u043e\u043b\u044b \u0441\u043e \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0430\u043c\u0438 \u2014 \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u042d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u0438 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u0445 (\u0445\u043e\u0442\u044f \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u043e\u0442\u043a\u0443\u0434\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e \u2014 \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 SFINAE, \u0433\u0434\u0435 \u043d\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u043b\u0447\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u0437 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f). \u041d\u043e \u0435\u0441\u043b\u0438 \u0443\u0436 \u0446\u0435\u043b\u044c \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u043d\u044b\u043c, \u0442\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u0442\u0430\u0449\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043d\u0435\u044f\u0432\u043d\u043e\u0441\u0442\u0438 \u0432 \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438?<\/p>\n<p>  \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c<br \/>  <a href=\"https:\/\/akrzemi1.wordpress.com\/2020\/01\/29\/requires-expression\/\" rel=\"nofollow\">akrzemi1.wordpress.com\/2020\/01\/29\/requires-expression<\/a><br \/>  <a href=\"https:\/\/akrzemi1.wordpress.com\/2020\/03\/26\/requires-clause\/\" rel=\"nofollow\">akrzemi1.wordpress.com\/2020\/03\/26\/requires-clause<\/a><br \/>  (\u0442\u0430\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439)<br \/>  \u0441 \u043c\u043e\u0438\u043c\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<br \/>  \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 <a href=\"https:\/\/wandbox.org\" rel=\"nofollow\">wandbox.org<\/a><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/495396\/\"> https:\/\/habr.com\/ru\/post\/495396\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/495396\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qd\/ja\/kc\/qdjakcxd4173w_juzv5fx3bf0_o.jpeg\"><br \/>  \u0420\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u043e\u0432\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0421++20 \u2014 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0430\u043c\u0438.<br \/>  <a href=\"https:\/\/en.wikipedia.org\/wiki\/Concepts_(C%2B%2B)\" rel=\"nofollow\">\u041a\u043e\u043d\u0446\u0435\u043f\u0442\u044b <\/a>(\u0438\u043b\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D1%8F_(C%2B%2B)\" rel=\"nofollow\">\u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438<\/a>, \u043a\u0430\u043a \u043f\u0438\u0448\u0435\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u0412\u0438\u043a\u0438) \u2014 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0444\u0438\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e. <\/p>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e \u0421++20 \u2014 \u0432 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u043e, \u043d\u0430 \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u044b. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0431\u044b\u043b\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0421 \u044d\u0442\u0438\u043c \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u0445\u0430\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0430\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043d\u0435 \u0445\u043e\u0447\u0443 (\u0445\u043e\u0442\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f)<\/p>\n<p>  \u041a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u043d\u0435\u0434\u043e\u0440\u0430\u0437\u0443\u043c\u0435\u043d\u0438\u0435. \u041e\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u043e\u0449\u043d\u0443\u044e. \u0418 \u0432\u043e\u0442, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0441 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044f \u0441\u0442\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435.<\/p>\n<p>  \u0421\u043a\u0430\u0436\u0443 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0432 \u0448\u043e\u043a\u0435:) \u0421++ \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u043d\u043e \u0442\u0443\u0442 \u0445\u043e\u0442\u044f-\u0431\u044b \u0435\u0441\u0442\u044c \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435: \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041c\u0435\u0442\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u043b\u0438, \u0430 \u043d\u0435 \u0437\u0430\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u0430. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u044f\u0437\u044b\u043a\u0430, \u0431\u044b\u043b\u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u044d\u0442\u043e \u00ab\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043c\u0438\u0440\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0436\u0435 \u2014 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u0418, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0447\u0435\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439? \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f\u2026   <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-301185","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301185"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301185\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}