C++17新特性


C++17核心库文件

    
        P0001R1 弃用register关键字
    
    
        P0002R1 bool类型不再支持++运算符
    
    
        P0012R1 异常成为类型系统的一部分,第五版
    
    
        P0061R1 支持__has_include
    
    
        P0134R0 引入非静态成员变量的拷贝构造函数//not sure
    
    
        P0136R1 重写继承构造器(core issue 1941 et al)
    
    
        P0160R0 删除一元运算符的预设值//Wording for removing defaults for unary folds
    


    C++17库相关文件


    
        P0004R1 弃用过时的iostreams的别名
    
    
        P0006R0 采用基于标准库规范的类型特征变量模板
    
    
        P0092R1 优化
    
    
        P0007R1 Constant View:一个::as_const 的辅助函数模板
    
    
        P0156R0 可变的lock_guard (Rev. 3)
    
    
        P0074R0 使std::owner_less更加灵活
    
    
        P0013R1 逻辑运算符类型特征 (revision 1)
    


    库基本规范 第二版文件


    
        N4531 替换std::rand,版本三
    
    
        P0013R1 逻辑运算符类型特征 (revision 1)[C++17投票通过]
    
    
        这些文件将会应用于N4529草案,然后进行拟议草案技术规范的投票。
    


    并发规范


    
        P0159R0 将会作为并发技术规范发布,届时可能稍作改动。
    


    并行规范 v2


    
        N4505草案和P0155R0的”Task Block R5”负责这项工作。
    


    网络规范


    
        P0112R1草案负责这想工作。
    


    范围规范


    
        P0021R0草案负责这项工作。
    


    核心主题


    
        1274.常见的非终结符表达式和内嵌初始化列表
    
    
        1391.非推导模板参数到参数类型的转化
    
    
        1722.lambda函数指针转换函数应该不例外吗?
    
    
        1847.部分排序时声明一致性
    
    
        1863.抛出对象的类型应该支持std::current_exception()
    
    
        1949.”sequenced after”代替”sequenced before”
    
    
        1975.允许声明异常类型
    
    
        1981.隐式和显式的上下文转换
    
    
        1990.decl-specifier-seq造成的歧义
    
    
        2000.#include之外的头文件名称
    
    
        2004.常亮表达式中有可变成员的变量
    
    
        2006.Cv-qualified的void类型
    
    
        2015.虚函数的odr-use
    
    
        2016.类型转换函数的描述中可能存在的歧义
    
    
        2019.存储时间描述中成员引用的省略
    
    
        2024.依赖类型和未解包的参数包
    
    
        2026.Zero-initialization和constexpr
    
    
        2027.指定多个alignas的需求不明
    
    
        2031.&&的不兼容
    
    
        2052.模板参数推导vs重载操作符
    
    
        2075.传递短初始化列表给数组引用参数
    
    
        2101.对类型和值的依赖的错误说明
    
    
        2120.数组作为标准布局类的第一个非静态成员变量
    


    库主题


    
        1169.num_get不能和strto*完全兼容
    
    
        2072.缓冲区容量定义不明确
    
    
        2101.一些类型转换可能产生非预期的类型
    
    
        2111.处理异常时可能调用那些已经删除的句柄?
    
    
        2119.扩展int类型缺少哈希函数
    
    
        2127.带raw_storage_iterator的Move-construction
    
    
        2133.重载逗号迭代器
    
    
        2156.无序容器的reserve(n)保存的是n-1个元素
    
    
        2218.容器如何使用allocator_traits::construct()不够明确
    
    
        2219.INVOKE-ing一个带有reference_wrapper的指针作为对象表达式
    
    
        2224.不活跃对象的状态问题
    
    
        2234.assert()应该允许在常亮表达式中使用
    
    
        2244.关于basic_istream::seekg的issue
    
    
        2250.Library Issue 2207中的Follow-up
    
    
        2259.17.6.5.5规则中有关成员函数的问题
    
    
        2273.regex_match的歧义
    
    
        2336.is_trivially_constructible/is_trivially_assignable结果永远是false
    
    
        2353.std::next限制过度
    
    
        2367.pair和tuple无参数时不兼容is_constructible
    
    
        2380.<cstdlib>应该提供long ::abs(long) 和long long ::abs(long long)吗?
    
    
        2384.分配器的解除函数需要更好的规范
    
    
        2385.function::assign分配器参数无意义
    
    
        2435.reference_wrapper::operator()的标记应该是被删除
    
    
        2447.分配器和volatile-qualified值类型
    
    
        2462.std::ios_base::failure 被过度规范
    
    
        2466.allocator_traits::max_size()默认表现是错误的
    
    
        2469.map的[]操作符和unordered_map规则错误
    
    
        2473.basic_filebuf对C文件的兼容
    
    
        2476.scoped_allocator_adaptor是不可分配的
    
    
        2477.std::vector::erase()和std::deque::erase()的不一致
    
    
        2483.throw_with_nested()应该使用is_final
    
    
        2484.rethrow_if_nested()是不可实现的
    
    
        2485.常量tuple&&应该重载get()
    
    
        2486.mem_fn()应该提供向前兼容
    
    
        2487.bind()不应该是cv-overloaded, 而应该是const-overloaded
    
    
        2489.mem_fn()应该是noexcept的
    
    
        2492.明确comp的需求
    
    
        2495.没有类似异常安全元素的东西
    


    Library Fundamentals TS v2 Issues


    
        2494.[fund.ts.v2] ostream_joiner应该是noexcept的
    
    
        2500.[fund.ts.v2] fundts.memory.smartptr.shared.obs/6 应该适用于cv-unqualified void
    
    
        2515.[fund.ts.v2]observer_ptr的确定操作符不能匹配任何简介
    
    
        2517.[fund.ts.v2] 两个propagate_const assignment 操作符返回不正确的类型
    
    
        2526.[fund.ts]experimental::function::swap 条件不正确
    


本原创文章来源:C++技术网 http://www.cjjjs.cn ,阅读更多原创精品文章,欢迎访问C++技术网。

原文地址:https://www.cnblogs.com/cjjjs/p/4957702.html