Spec-Zone.ru › C++

C++17

В C++17 были объединены следующие функции:

  • Из Спецификации файловой системы: библиотека filesystem.
  • Из Спецификации фундаментальных элементов библиотек v1: функции, включая std::any, std::optional, std::string_view, std::apply, полиморфные аллокаторы, поисковые функции.
  • Из Спецификации фундаментальных элементов библиотек v2: std::void_t, std::conjunction, std::disjunction, std::negation, std::not_fn, std::gcd, std::lcm.
  • Из Спецификации параллелизма v1: функции, включая политики выполнения, std::reduce, std::inclusive_scan, std::exclusive_scan, но удаляя exception_list.
  • Из Спецификации специальных математических функций: специальные математические функции.
  • Из C11: std::aligned_alloc, std::timespec_get.

Устаревшее

Удалено:
  • std::auto_ptr,
  • устаревшие объекты функций,
  • std::random_shuffle,
  • std::unexpected,
  • устаревшие алиасы iostream,
  • триграфы,
  • ключевое слово register,
  • bool инкремент,
  • динамическое указание на исключение
Устаревшие:
  • std::iterator,
  • std::raw_storage_iterator,
  • std::get_temporary_buffer,
  • std::is_literal_type,
  • std::result_of,
  • все из <codecvt>

Новые возможности языка

  • u8 символ-литерал
  • noexcept стало частью системы типов
  • новые правила порядка вычисления
  • захват лямбда-захвата *this
  • constexpr
    if constexpr во время компиляции
    constexpr лямбда
  • Переменные
    встроенные переменные
    структурированные связывания
    инициализаторы для if и switch
    гарантированное удаление копирования
    материализация временных объектов
  • Шаблоны
    fold-выражения ( ... )
    вывод параметров класса шаблона tuple t(4, 3, 2.5)
    параметры шаблона, не являющиеся типами, объявленные с auto
  • Пространства имен
    упрощенные вложенные пространства имен
    using объявление, объявляющее несколько имен
    пространства имен атрибутов не нуждаются в повторении
  • новые атрибуты :
    • [[fallthrough]]
    • [[maybe_unused]]
    • [[nodiscard]]
  • __has_include

Новые заголовочные файлы

  • <any>
  • <charconv>
  • <execution>
  • <filesystem>
  • <memory_resource>
  • <optional>
  • <string_view>
  • <variant>

Новые возможности библиотеки

Типы служебного назначения

  • std::tuple:
    • std::apply
    • std::make_from_tuple
    • средства вывода
  • std::any
  • std::optional
  • std::variant
  • поисковые функции
  • std::as_const
  • std::not_fn

Управление памятью

  • Алгоритмы для неинициализированной памяти
    • std::destroy_at
    • std::destroy
    • std::destroy_n
    • std::uninitialized_move
    • std::uninitialized_value_construct
  • weak_from_this
  • std::pmr::memory_resource и std::polymorphic_allocator
  • std::aligned_alloc
  • прозрачные std::owner_less
  • поддержка массивов для std::shared_ptr
  • функции выделения памяти с явным выравниванием

Программирование на этапе компиляции

  • std::byte
  • std::conjunction/std::disjunction/std::negation
  • метафункция переменные шаблонов (xxx_+v)
  • std::is_swappable
  • is_invocable
  • is_aggregate
  • std::has_unique_object_representations

Алгоритмы

  • std::clamp
  • параллельные алгоритмы и политики выполнения
  • std::inclusive_scan
  • std::exclusive_scan
  • std::gcd
  • std::lcm
  • std::reduce

Итераторы и контейнеры

  • map/set extract и map/set merge
  • map/unordered_map try_emplace и insert_or_assign
  • непрерывные итераторы (LegacyContiguousIterator)
  • нечленуемые функции std::size/std::empty/std::data

Числа

  • специальные математические функции
  • 3D std::hypot

Другое

  • интерфейс кэша строки
  • std::launder
  • std::uncaught_exceptions
  • std::to_chars/std::from_chars
  • std::atomic<T>::is_always_lock_free
  • std::scoped_lock
  • std::timespec_get
  • функции округления для std::chrono::duration и std::chrono::time_point

Отчеты об ошибках

Отчеты об ошибках, исправленные в C++17 (290 ядра, 363 библиотеки)
END_OF_DOCUMENT_MARKER
  • CWG#92
  • CWG#150
  • CWG#212
  • CWG#238
  • CWG#242
  • CWG#253
  • CWG#314
  • CWG#330
  • CWG#343
  • CWG#393
  • CWG#426
  • CWG#591
  • CWG#609
  • CWG#636
  • CWG#727
  • CWG#987
  • CWG#1021
  • CWG#1116
  • CWG#1247
  • CWG#1274
  • CWG#1284
  • CWG#1292
  • CWG#1309
  • CWG#1315
  • CWG#1338
  • CWG#1343
  • CWG#1351
  • CWG#1356
  • CWG#1391
  • CWG#1395
  • CWG#1397
  • CWG#1446
  • CWG#1465
  • CWG#1467
  • CWG#1484
  • CWG#1490
  • CWG#1492
  • CWG#1496
  • CWG#1518
  • CWG#1552
  • CWG#1558
  • CWG#1561
  • CWG#1571
  • CWG#1572
  • CWG#1573
  • CWG#1589
  • CWG#1591
  • CWG#1596
  • CWG#1600
  • CWG#1603
  • CWG#1614
  • CWG#1615
  • CWG#1622
  • CWG#1630
  • CWG#1631
  • CWG#1633
  • CWG#1638
  • CWG#1639
  • CWG#1645
  • CWG#1652
  • CWG#1653
  • CWG#1657
  • CWG#1672
  • CWG#1677
  • CWG#1683
  • CWG#1686
  • CWG#1694
  • CWG#1696
  • CWG#1705
  • CWG#1708
  • CWG#1710
  • CWG#1712
  • CWG#1715
  • CWG#1719
  • CWG#1722
  • CWG#1734
  • CWG#1736
  • CWG#1744
  • CWG#1748
  • CWG#1750
  • CWG#1751
  • CWG#1752
  • CWG#1753
  • CWG#1756
  • CWG#1757
  • CWG#1758
  • CWG#1766
  • CWG#1774
  • CWG#1776
  • CWG#1777
  • CWG#1779
  • CWG#1780
  • CWG#1782
  • CWG#1784
  • CWG#1788
  • CWG#1791
  • CWG#1793
  • CWG#1794
  • CWG#1795
  • CWG#1796
  • CWG#1797
  • CWG#1799
  • CWG#1800
  • CWG#1802
  • CWG#1804
  • CWG#1805
  • CWG#1806
  • CWG#1807
  • CWG#1809
  • CWG#1810
  • CWG#1811
  • CWG#1812
  • CWG#1813
  • CWG#1814
  • CWG#1815
  • CWG#1816
  • CWG#1819
  • CWG#1823
  • CWG#1824
  • CWG#1825
  • CWG#1830
  • CWG#1832
  • CWG#1834
  • CWG#1838
  • CWG#1843
  • CWG#1846
  • CWG#1847
  • CWG#1848
  • CWG#1850
  • CWG#1851
  • CWG#1852
  • CWG#1858
  • CWG#1860
  • CWG#1861
  • CWG#1863
  • CWG#1865
  • CWG#1866
  • CWG#1870
  • CWG#1872
  • CWG#1873
  • CWG#1874
  • CWG#1875
  • CWG#1877
  • CWG#1878
  • CWG#1881
  • CWG#1882
  • CWG#1885
  • CWG#1886
  • CWG#1887
  • CWG#1888
  • CWG#1891
  • CWG#1892
  • CWG#1895
  • CWG#1899
  • CWG#1902
  • CWG#1903
  • CWG#1909
  • CWG#1911
  • CWG#1916
  • CWG#1920
  • CWG#1922
  • CWG#1925
  • CWG#1926
  • CWG#1929
  • CWG#1930
  • CWG#1932
  • CWG#1940
  • CWG#1941
  • CWG#1942
  • CWG#1946
  • CWG#1949
  • CWG#1951
  • CWG#1952
  • CWG#1955
  • CWG#1956
  • CWG#1958
  • CWG#1959
  • CWG#1961
  • CWG#1963
  • CWG#1966
  • CWG#1967
  • CWG#1971
  • CWG#1975
  • CWG#1978
  • CWG#1981
  • CWG#1988
  • CWG#1990
  • CWG#1991
  • CWG#1992
  • CWG#1995
  • CWG#1999
  • CWG#2000
  • CWG#2001
  • CWG#2004
  • CWG#2006
  • CWG#2008
  • CWG#2010
  • CWG#2011
  • CWG#2012
  • CWG#2015
  • CWG#2016
  • CWG#2017
  • CWG#2019
  • CWG#2022
  • CWG#2024
  • CWG#2026
  • CWG#2027
  • CWG#2031
  • CWG#2032
  • CWG#2033
  • CWG#2038
  • CWG#2039
  • CWG#2040
  • CWG#2041
  • CWG#2044
  • CWG#2046
  • CWG#2047
  • CWG#2052
  • CWG#2061
  • CWG#2063
  • CWG#2064
  • CWG#2066
  • CWG#2068
  • CWG#2069
  • CWG#2071
  • CWG#2075
  • CWG#2076
  • CWG#2079
  • CWG#2082
  • CWG#2084
  • CWG#2085
  • CWG#2091
  • CWG#2093
  • CWG#2094
  • CWG#2095
  • CWG#2096
  • CWG#2098
  • CWG#2099
  • CWG#2100
  • CWG#2101
  • CWG#2104
  • CWG#2106
  • CWG#2107
  • CWG#2109
  • CWG#2113
  • CWG#2120
  • CWG#2122
  • CWG#2124
  • CWG#2129
  • CWG#2130
  • CWG#2137
  • CWG#2140
  • CWG#2141
  • CWG#2143
  • CWG#2145
  • CWG#2146
  • CWG#2147
  • CWG#2153
  • CWG#2154
  • CWG#2155
  • CWG#2156
  • CWG#2157
  • CWG#2163
  • CWG#2167
  • CWG#2171
  • CWG#2174
  • CWG#2175
  • CWG#2176
  • CWG#2180
  • CWG#2184
  • CWG#2191
  • CWG#2196
  • CWG#2198
  • CWG#2201
  • CWG#2205
  • CWG#2206
  • CWG#2211
  • CWG#2214
  • CWG#2218
  • CWG#2220
  • CWG#2224
  • CWG#2247
  • CWG#2248
  • CWG#2251
  • CWG#2259
  • CWG#2262
  • CWG#2268
  • CWG#2271
  • CWG#2272
  • CWG#2276
  • #LWG839
  • #LWG1041
  • #LWG1150
  • #LWG1169
  • #LWG1201
  • #LWG1526
  • #LWG2016
  • #LWG2051
  • #LWG2059
  • #LWG2062
  • #LWG2063
  • #LWG2072
  • #LWG2076
  • #LWG2101
  • #LWG2106
  • #LWG2108
  • #LWG2111
  • #LWG2118
  • #LWG2119
  • #LWG2127
  • #LWG2129
  • #LWG2133
  • #LWG2156
  • #LWG2160
  • #LWG2166
  • #LWG2168
  • #LWG2170
  • #LWG2179
  • #LWG2181
  • #LWG2192
  • #LWG2208
  • #LWG2212
  • #LWG2217
  • #LWG2218
  • #LWG2219
  • #LWG2221
  • #LWG2223
  • #LWG2224
  • #LWG2228
  • #LWG2230
  • #LWG2232
  • #LWG2233
END_OF_DOCUMENT_MARKER
  • #LWG2234
  • #LWG2239
  • #LWG2241
  • #LWG2244
  • #LWG2245
  • #LWG2250
  • #LWG2259
  • #LWG2260
  • #LWG2261
  • #LWG2266
  • #LWG2273
  • #LWG2274
  • #LWG2276
  • #LWG2294
  • #LWG2296
  • #LWG2309
  • #LWG2310
  • #LWG2312
  • #LWG2325
  • #LWG2328
  • #LWG2336
  • #LWG2340
  • #LWG2343
  • #LWG2353
  • #LWG2354
  • #LWG2361
  • #LWG2364
  • #LWG2365
  • #LWG2367
  • #LWG2368
  • #LWG2369
  • #LWG2370
  • #LWG2376
  • #LWG2377
  • #LWG2378
  • #LWG2380
  • #LWG2384
  • #LWG2385
  • #LWG2387
  • #LWG2391
  • #LWG2393
  • #LWG2394
  • #LWG2396
  • #LWG2397
  • #LWG2399
  • #LWG2400
  • #LWG2401
  • #LWG2403
  • #LWG2404
  • #LWG2406
  • #LWG2407
  • #LWG2408
  • #LWG2411
  • #LWG2415
  • #LWG2419
  • #LWG2420
  • #LWG2422
  • #LWG2424
  • #LWG2425
  • #LWG2426
  • #LWG2427
  • #LWG2428
  • #LWG2433
  • #LWG2434
  • #LWG2435
  • #LWG2436
  • #LWG2437
  • #LWG2438
  • #LWG2439
  • #LWG2440
  • #LWG2441
  • #LWG2442
  • #LWG2443
  • #LWG2445
  • #LWG2447
  • #LWG2448
  • #LWG2450
  • #LWG2454
  • #LWG2455
  • #LWG2456
  • #LWG2458
  • #LWG2459
  • #LWG2460
  • #LWG2462
  • #LWG2464
  • #LWG2465
  • #LWG2466
  • #LWG2467
  • #LWG2468
  • #LWG2469
  • #LWG2470
  • #LWG2473
  • #LWG2475
  • #LWG2476
  • #LWG2477
  • #LWG2482
  • #LWG2483
  • #LWG2484
  • #LWG2485
  • #LWG2486
  • #LWG2487
  • #LWG2488
  • #LWG2489
  • #LWG2492
  • #LWG2495
  • #LWG2501
  • #LWG2502
  • #LWG2503
  • #LWG2505
  • #LWG2510
  • #LWG2514
  • #LWG2519
  • #LWG2520
  • #LWG2523
  • #LWG2529
  • #LWG2531
  • #LWG2534
  • #LWG2536
  • #LWG2537
  • #LWG2540
  • #LWG2542
  • #LWG2543
  • #LWG2544
  • #LWG2545
  • #LWG2548
  • #LWG2549
  • #LWG2550
  • #LWG2554
  • #LWG2556
  • #LWG2557
  • #LWG2559
  • #LWG2560
  • #LWG2562
  • #LWG2565
  • #LWG2566
  • #LWG2567
  • #LWG2569
  • #LWG2571
  • #LWG2572
  • #LWG2576
  • #LWG2577
  • #LWG2578
  • #LWG2579
  • #LWG2581
  • #LWG2582
  • #LWG2583
  • #LWG2584
  • #LWG2585
  • #LWG2586
  • #LWG2587
  • #LWG2589
  • #LWG2590
  • #LWG2591
  • #LWG2596
  • #LWG2598
  • #LWG2663
  • #LWG2664
  • #LWG2665
  • #LWG2667
  • #LWG2669
  • #LWG2670
  • #LWG2671
  • #LWG2672
  • #LWG2673
  • #LWG2674
  • #LWG2676
  • #LWG2677
  • #LWG2678
  • #LWG2679
  • #LWG2680
  • #LWG2681
  • #LWG2683
  • #LWG2684
  • #LWG2685
  • #LWG2686
  • #LWG2687
  • #LWG2688
  • #LWG2689
  • #LWG2694
  • #LWG2696
  • #LWG2698
  • #LWG2699
  • #LWG2704
  • #LWG2706
  • #LWG2707
  • #LWG2709
  • #LWG2710
  • #LWG2711
  • #LWG2712
  • #LWG2715
  • #LWG2716
  • #LWG2718
  • #LWG2719
  • #LWG2720
  • #LWG2721
  • #LWG2722
  • #LWG2723
  • #LWG2724
  • #LWG2725
  • #LWG2726
  • #LWG2727
  • #LWG2728
  • #LWG2729
  • #LWG2732
  • #LWG2734
  • #LWG2735
  • #LWG2736
  • #LWG2738
  • #LWG2739
  • #LWG2740
  • #LWG2742
  • #LWG2744
  • #LWG2747
  • #LWG2748
  • #LWG2749
  • #LWG2752
  • #LWG2753
  • #LWG2754
  • #LWG2755
  • #LWG2756
  • #LWG2757
  • #LWG2758
  • #LWG2759
  • #LWG2760
  • #LWG2763
  • #LWG2765
  • #LWG2767
  • #LWG2768
  • #LWG2769
  • #LWG2770
  • #LWG2771
  • #LWG2773
  • #LWG2776
  • #LWG2777
  • #LWG2778
  • #LWG2781
  • #LWG2782
  • #LWG2784
  • #LWG2785
  • #LWG2786
  • #LWG2787
  • #LWG2788
  • #LWG2789
  • #LWG2790
  • #LWG2791
  • #LWG2793
  • #LWG2794
  • #LWG2795
  • #LWG2796
  • #LWG2798
  • #LWG2799
  • #LWG2801
  • #LWG2802
  • #LWG2803
  • #LWG2804
  • #LWG2805
  • #LWG2806
  • #LWG2807
  • #LWG2809
  • #LWG2810
  • #LWG2812
  • #LWG2817
  • #LWG2824
  • #LWG2825
  • #LWG2826
  • #LWG2830
  • #LWG2834
  • #LWG2835
  • #LWG2837
  • #LWG2838
  • #LWG2842
  • #LWG2850
  • #LWG2853
  • #LWG2855
  • #LWG2857
  • #LWG2861
  • #LWG2862
  • #LWG2863
  • #LWG2864
  • #LWG2866
  • #LWG2867
  • #LWG2868
  • #LWG2869
  • #LWG2872
  • #LWG2873
  • #LWG2874
  • #LWG2875
  • #LWG2876
  • #LWG2877
  • #LWG2878
  • #LWG2879
  • #LWG2880
  • #LWG2882
  • #LWG2887
  • #LWG2888
  • #LWG2889
  • #LWG2890
  • #LWG2895
  • #LWG2900
  • #LWG2901
  • #LWG2903
  • #LWG2904
  • #LWG2905
  • #LWG2908
  • #LWG2911
  • #LWG2912
  • #LWG2913
  • #LWG2914
  • #LWG2915
  • #LWG2917
  • #LWG2918
  • #LWG2919
  • #LWG2920
  • #LWG2921
  • #LWG2924
  • #LWG2925
  • #LWG2926
  • #LWG2927
  • #LWG2928
  • #LWG2934
  • #LWG2956

Поддержка компилятора

Основная статья: Поддержка компилятора C++17

Основные языковые возможности C++17

Функция C++17

Статья(и)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XL C++
IBM Open XL C++ для AIX
IBM Open XL C++ для z/OS
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
DR11: Новые auto правила для прямого инициализации списком N3922 5 3.8 19.0 (2015)* Да 4.10.1 17.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
static_assert без сообщения N3928 6 2.5 19.10* Да 4.12 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
typename в параметре шаблона шаблона N4051 5 3.5 19.0 (2015)* Да 4.10.1 17.0 17.1.0 1.1.0 10.3 11.0 17.7 Да*
Удаление триграфов N4086 5 3.5 16.0* Да 5.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Определение вложенного пространства имен N4230 6 3.6 19.0 (Update 3)* Да 4.12 17.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Атрибуты для пространств имен и перечислителей N4266 4.9 (частично)*
6
3.6 19.0 (2015)* Да 4.11 17.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
u8 символьные литералы N4267 6 3.6 19.0 (2015)* Да 4.11 17.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Разрешить постоянное вычисление для всех аргументов шаблонов без типа N4268 6 3.6 19.12* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Складываемые выражения N4295 6 3.6 19.12* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0
Унарные складываемые выражения и пустые параметры пакетов P0036R0 6 3.9 19.12* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Удалить устаревшее использование ключевого слова register P0001R1 7 3.8 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Удалить устаревший operator++(bool) P0002R1 7 3.8 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Сделать спецификации исключений частью системы типов P0012R1 7 4 19.12* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Агрегатные классы с базовыми классами P0017R1 7 3.9 19.14* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
__has_include в условных выражениях препроцессора P0061R1 5 Да 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
DR11: Новое спецификация для наследования конструкторов (DR1941 и др.) P0136R1 7 3.9 19.14* Да 6.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Захват лямбда-выражений *this P0018R3 7 3.9 19.11* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0
Прямая инициализация перечислений списком P0138R2 7 3.9 19.11* Да 4.14 18.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Константные лямбда-выражения P0170R1 7 5 19.11* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0
Различные типы begin и end в циклах range-based for P0184R0 6 3.9 19.10* Да 4.12 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
[[fallthrough]] атрибут P0188R1 7 3.9 19.10* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
[[nodiscard]] атрибут P0189R1 7 3.9 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
[[maybe_unused]] атрибут P0212R1 7 3.9 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Шестнадцатеричные вещественные литералы P0245R1 3.0 Да 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Использование пространств имен атрибутов без повторения P0028R4 7 3.9 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Динамическое выделение памяти для данных с повышенным выравниванием P0035R4 7 4 19.12*

10.0.0*

4.14 19.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Выведение аргументов шаблона класса P0091R3 7 5 19.14* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Нетиповые параметры шаблонов с типом auto P0127R2 7 4 19.14* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Гарантированное исключение копирования P0135R1 7 4 19.13* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Замена объектов класса, содержащих члены-ссылки P0137R1 7 6 19.14* Да 5.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Более строгий порядок вычисления выражений P0145R3 7 4 19.14* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Структурированные привязки P0217R3 7 4 19.11* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0*
Игнорировать неизвестные атрибуты P0283R2 Да 3.9 19.11* Да 4.13 18.0 17.1.0 1.1.0 10.3 11.0 17.7 11.0
Операторы constexpr if P0292R2 7 3.9 19.11* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0
Инициализирующие выражения для операторов if и switch P0305R1 7 3.9 19.11* Да 4.14 18.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0
Встроенные переменные P0386R2 7 3.9 19.12* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 18.1 11.0
Удаление динамических спецификаций исключений P0003R5 7 4 19.10* Да 4.14 19.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
Расширения пакетов в инструкциях using P0195R2 7 4 19.14* Да 5.0 19.0 17.1.0 1.1.0 10.3 11.0 19.1 11.0
DR98: Сопоставление шаблонных шаблонных аргументов исключает совместимые шаблоны P0522R0 7 4 19.12* Да 5.0 19.0.1 17.1.0 1.1.0 10.3 11.0 19.1 11.0


Функции C++17


Статья(и)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XL C++
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc

C++17 функции библиотеки

Функция C++17

Статья(и)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
IBM Open XL C/C++ for AIX*
Intel Parallel STL
Sun/Oracle C++*
Embarcadero C++ Builder*
std::void_t N3911 6 3.6 19.0 (2015)* Да 17.1.0 Н/Д 10.3
std::uncaught_exceptions() N4259 6 3.7 19.0 (2015)* Да 17.1.0 Н/Д 10.3
std::size(), std::empty() и std::data() N4280 6 3.6 19.0 (2015)* Да 17.1.0 Н/Д 10.3
Улучшение std::pair и std::tuple N4387 6 4 19.0 (Update 2)* Да 17.1.0 Н/Д 10.3
std::bool_constant N4389 6 3.7 19.0 (2015)* Да 17.1.0 Н/Д 10.3
std::shared_mutex (без указанного времени) N4508 6 3.7 19.0 (Update 2)* Да 17.1.0 Н/Д 10.3
Шаблонные переменные свойств типов P0006R0 7 3.8 19.0 (Update 2)* Да 17.1.0 Н/Д 10.3
Логические операторные свойства типов P0013R1 6 3.8 19.0 (Update 2)* Да 17.1.0 Н/Д 10.3
Параллельные алгоритмы и политики выполнения P0024R2 9* 17
(частично)*
19.14* 18.0*
std::clamp() P0025R1 7 3.9 19.0 (Update 3)*

10.0.0*

17.1.0 Н/Д 10.3
Размер аппаратного вмешательства P0154R1 12 15 (частично)* 19.11* Н/Д 10.3
(безопасный) свойства перестановки P0185R1 7 3.9 19.0 (Update 3)*

10.0.0*

17.1.0 Н/Д 10.3
Файловая система P0218R1 8 7 19.14*

11.0.0*

17.1.1 Н/Д 10.3
std::string_view N3921
P0220R1
7 4 19.10*

10.0.0*

17.1.0 Н/Д 10.3
std::any P0220R1 7 4 19.10*

10.0.0*

17.1.0 Н/Д 10.3
std::optional P0220R1 7 4 19.10*

10.0.0*

17.1.0 Н/Д 10.3
Полиморфные ресурсы памяти P0220R1 9 16 19.13*

15.0.0*

Н/Д 10.3
Специальные математические функции P0226R1 7 19.14* Н/Д 10.3
Большая часть библиотеки стандарта C11 P0063R3 9 7 19.0 (2015)*
(частично)*

10.0.0*

17.1.1 Н/Д
Слияние Maps и Sets P0083R3 7 8 19.12*

10.0.0*

17.1.1 Н/Д
тип возвращаемого значения функций emplace* некоторых контейнеров изменён с void на reference P0084R2 7.1 4.0 19.11* Да 17.1.0 Н/Д
std::variant P0088R3 7 4 19.10*

10.0.0*

17.1.0 Н/Д 10.3
std::make_from_tuple() P0209R2 7 3.9 19.10* Да 17.1.0 Н/Д 10.3
std::has_unique_object_representations P0258R2 7 6 19.11* Да 17.1.1 Н/Д 10.3
std::gcd() и std::lcm() P0295R0 7 4 19.11* Да 17.1.0 Н/Д 10.3
std::not_fn P0005R4
P0358R1
7 3.9 19.12* Да 17.1.0 Н/Д 10.3
Основные преобразования строк* P0067R5 8 (без FP)
11
7 (без FP)
14 (без FP from_chars)
19.14* (без FP)*
19.24*

10.0.0* (без FP)

17.1.1 (без FP from_chars) Н/Д 10.3 (без FP from_chars)
std::shared_ptr и std::weak_ptr с поддержкой массивов P0414R2 7 11 19.12*

12.0.0*

17.1.1 Н/Д 10.3
std::scoped_lock P0156R2 7 5 19.11* Да 17.1.1 Н/Д 10.3
std::byte P0298R3 7 5 19.11* Да 17.1.1 Н/Д 10.3
std::is_aggregate LWG2911 7 5 19.15* Да 17.1.1 Н/Д 10.3
DR17: std::hash<std::filesystem::path> LWG3657 11.4 17 19.32* Н/Д


Функция C++17


Документ(ы)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
IBM Open XL C/C++ for AIX*
Intel Parallel STL
Sun/Oracle C++*
Embarcadero C++ Builder*
Примечания
  • По состоянию на 20.11.2020, последняя версия Oracle Developer Studio 12.6. В её документации нет упоминания C++17.
  • Компилятор Cray может поддерживать некоторые функции раньше, чем версия 11.0. Эта версия — когда он стал производным от Clang, получив всю поддержку функций языка базового компилятора. См. документ Cray/HPE S-2179.

* - наведите курсор на ячейку с звёздочкой *, чтобы увидеть дополнительное всплывающее сообщение.
DRnn - число nn после "DR" указывает целевую версию C++, к которой относится отчёт об ошибке, например, DR20 → C++20.

Внешние ссылки

Примеры работы с C++17

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/17

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API