{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог ни о чём, заметки с тегом: C++",
    "home_page_url": "http:\/\/gladilov.org.ru\/blog\/tags\/cpp\/",
    "feed_url": "http:\/\/gladilov.org.ru\/blog\/tags\/cpp\/json\/",
    "icon": false,
    "author": {
        "name": "Павел Гладилов",
        "url": "http:\/\/gladilov.org.ru\/blog\/",
        "avatar": false
    },
    "items": [
        {
            "id": "166",
            "url": "http:\/\/gladilov.org.ru\/blog\/all\/congratulations\/",
            "title": "Поздравляю!",
            "content_html": "<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>#include &lt;stdio.h&gt;\r\n\r\nint main(){\r\n        char mdata[] = {0x48, 0x61, 0x70, 0x70, 0x79, 0x20, 0x6e, 0x65, 0x77,\r\n                0x20, 0, 0, 0, 0, 0x20, 0x79, 0x65, 0x61, 0x72, 0x21, 0xa};\r\n        int i, y, c;\r\n        y = 2 * (10 * 10 * 10 + 3 * 3);\r\n        for (i = 0; i &lt; 4; i++){\r\n                c = y % 0xa;\r\n                mdata[0xd - i] = 0x30 + c;\r\n                y -= c;\r\n                y \/= 0xa;\r\n        }\r\n        for (i = 0; i &lt; 21; i++) putchar(mdata[i]);\r\n        return 0;\r\n}<\/code><\/pre><\/pre>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>איך אַרומנעמען און גראַטולירן איר אַלע. אַזוי פילע יאָרן צעלאָזן אונדזער נערוועס צו יעדער אנדערער, לאָזן אונדז פאָרזעצן דעם שפּאַס טעטיקייט. גוט גליק צו איר אַלע און געזונט.<\/code><\/pre><\/pre>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>新年快乐！万事如意！<\/code><\/pre><\/pre>\n",
            "date_published": "2018-01-01T00:27:30+03:00",
            "date_modified": "2018-02-08T20:18:15+03:00",
            "_date_published_rfc2822": "Mon, 01 Jan 2018 00:27:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "166",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "98",
            "url": "http:\/\/gladilov.org.ru\/blog\/all\/c-plus-plus-17\/",
            "title": "Утверждён стандарт C++17",
            "content_html": "<p>Комитет ISO по стандартизации языка C++ единогласно <a href=\"https:\/\/herbsutter.com\/2017\/09\/06\/c17-is-formally-approved\/\">утвердил<\/a> спецификацию C++1z в качестве международного стандарта «C++17». Представленные в спецификации возможности уже полностью поддерживаются в компиляторах GCC и Clang, а также частично реализованы в Intel C++ и Visual C++. Поддерживающие C++17 стандартные библиотеки реализованы в рамках проекта Boost.<\/p>\n<p><b class=\"spoiler-controller pop-up_camper_08_09_17\">Показать<\/b><\/p>\n<p><section class=\"spoiler pop-up_camper_08_09_17\"><\/p>\n<p><\/p>\n<p>В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO\/IEC 14882:2017. Тем временем, комитет уже начал работу над следующим стандартом C++20 (C++2a) и рассмотрел на последнем совещании возможные новшества.<\/p>\n<p>Основные особенности C++17:<\/p>\n<ul>\n<li>Возможность инициализации переменных внутри выражений if и switch;<\/li>\n<li>Возможность использования кодировки UTF-8 в символьных литералах;<\/li>\n<li>Шестнадцатеричные литералы с плавающей запятой;<\/li>\n<li>Указание текстового сообщения в static_assert теперь опционально;<\/li>\n<li>Удалена поддержка триграфов;<\/li>\n<li>Возможность указания typename (как альтернативы классам) в параметрах вложенного шаблона;<\/li>\n<li>Новые правила вывода типа «auto» из списка инициализации (braced-init-list);<\/li>\n<li>Возможность упрощённого определения вложенных параметров пространств имён: «namespace X::Y {...}» вместо «namespace X { namespace Y {...}}»;<\/li>\n<li>Возможность указания атрибутов для пространств имён и перечислений;<\/li>\n<li>Новые стандартные атрибуты &#91;&#91;fallthrough&#93;&#93;, &#91;&#91;maybe_unused&#93;&#93; и &#91;&#91;nodiscard&#93;&#93;;<\/li>\n<li>Проверка на неизменность (константность) для всех нетипизированных аргументов шаблонов;<\/li>\n<li>Сворачивание выражений для вариативных шаблонов;<\/li>\n<li>Раскрытие выражений «if» на стадии компиляции, если заданное внутри условие является константой;<\/li>\n<li>Структурированные привязки, например, «auto [a, b] = getTwoReturnValues()»;<\/li>\n<li>Автоматическое определение типов конструктора шаблонов (например, теперь можно указывать std::pair(5.0, false), явно не задавая типы «double, bool»);<\/li>\n<li>Inline-переменные, которые можно определять в заголовочных файлах;<\/li>\n<li>Добавлена библиотека для работы с ФС, основанная на boost::filesystem;<\/li>\n<li>Из библиотеки TS I перенесены std::string_view, std::optional и std::any;<\/li>\n<li>Добавлен std::uncaught_exceptions в качестве замены std::uncaught_exception;<\/li>\n<li>Новые функции вставки try_emplace и insert_or_assign для std::map и std::unordered_map;<\/li>\n<li>Унифицирован доступ к контейнерам std::size, std::empty и std::data;<\/li>\n<li>Определены непрерывные итераторы (contiguous iterators);<\/li>\n<li>Удалены устаревшие типы и функции, в том числе std::auto_ptr и std::random_shuffle;<\/li>\n<li>Представлены параллельно выполняемые варианты алгоритмов STL;<\/li>\n<li>Добавлены дополнительные математические функции, включая эллиптические интегралы и функции Бесселя;<\/li>\n<li>Представлены std::variant и std::byte;<\/li>\n<li>Новые свойства логического оператора: std::conjunction, std::disjunction и std::negation.<\/section><\/li>\n<\/ul>\n",
            "date_published": "2017-09-08T00:59:32+03:00",
            "date_modified": "2018-07-11T10:45:33+03:00",
            "_date_published_rfc2822": "Fri, 08 Sep 2017 00:59:32 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "98",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3249,
    "_e2_ua_string": "E2 (v3249; Aegea)"
}