use*_*370 16 c++ generics auto c++-concepts c++14
在注视GCC 4.9.0版本改变了这里,我惊喜地阅读以下; 在C++的"新语言和语言特定改进"部分下:
G ++支持N3889的§4.1.2和§5.1.1:Concepts Lite Specification所规定的无约束泛型函数.简而言之,auto可以用作任何函数声明符的参数声明中的类型说明符,以便引入隐式函数模板参数,类似于通用lambdas.
// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }
Run Code Online (Sandbox Code Playgroud)
我构建了GCC 4.9.0,我的初始测试按预期工作.我相信Concepts Lite将继续以某种方式辅助即将推出的C++ 14规范.是否有任何"无约束通用函数"计划成为C++的一部分?
如果我们看一下非常接近C++ 14 DIS 的最新草案标准N3936N3937(这在N3938中有所介绍).它不包含部分4.1.2和5.1.1中指定的任何语言N3889.
所以对于C++ 14来说,看起来答案是否定的,但是Bjarne Stroustrup说概念lite将是一份技术报告.您可以在ISO cpp的"当前状态"页面上找到有关技术报告的更多信息,其中说明:
除了C++ 14之外,该委员会计划在2017年左右制作另一个C++标准.但这并不意味着在此期间没有发生任何事情,因为我们目前正在进行八(8)个单独的技术规范,其中一些正在进行中将于2012年和2015年出版.从2012年开始,该委员会已转变为"脱钩"模式,其中主要工作可独立于标准本身进行,并作为单独的TS提供.供应商可以选择实施这些,社区可以获得每个功能的std :: experimental版本的经验.这让我们可以根据经验学习和调整每个功能的设计,然后才能将其正式包含在实际C++标准的未来版本中