Lin*_*gxi 5 c++ generic-programming c++-standard-library language-lawyer c++14
标准库确实区分了通用算法的谓词和非谓词版本.例如,std::sort()看起来像:
template< class RandomIt >
void sort( RandomIt first, RandomIt last );
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
Run Code Online (Sandbox Code Playgroud)
写下面的内容有什么问题吗?
template< class RandomIt, class Compare = std::less<void>>
void sort( RandomIt first, RandomIt last, Compare comp = Compare{});
Run Code Online (Sandbox Code Playgroud)
几乎是历史原因.
C++ 98/03没有函数模板的默认模板参数,因此它必须使用两个重载.之后更改它可能会破坏用户代码.
那么,假设我们只是重新设计整个事物,第二种形式是否应该首选?
这就是目前Ranges TS的工作草案所做的.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |