msc*_*msc 46 c c++ prototype c++11 math-functions
我std::abs()在浏览cppreference时读到了这个函数.
在那个页面上我也看到了一个std::labs()功能.它与其中一个std::abs()重载(一个用于long)具有相同的原型.
long abs( long n );
long labs( long n );
Run Code Online (Sandbox Code Playgroud)
和
long long abs( long long n );
long long llabs( long long n );
Run Code Online (Sandbox Code Playgroud)
所以,
std::labs()是什么?std::labs()?std::abs()和之间有什么区别std::labs()?Sto*_*ica 62
C++ 11是当std::labs与std::llabs加入.这是使用C99标准库对C++标准库进行部分同步的一部分.
你并不真的需要它在C++代码中,因为我们有一个永远的long重载std::abs.但是,如果您有一些C代码(纯粹巧合也可以编译C++编译器),并且它使用labs,您可以使用C++ 11编译器和标准库来构建它.
回想起来,这些功能有一个非常有用的用例.那就是使用的尝试std::abs是模棱两可的.例如:
template<typename T>
T run_func(T (&f)(T)) {
return f({});
}
Run Code Online (Sandbox Code Playgroud)
然后试图打电话run_func(std::abs);是不正确的.我们需要明确指定模板参数或者std::abs转换为正确的类型.另一方面run_func(std::labs);不是暧昧,也不是太冗长.
不过,不太有用.
| 归档时间: |
|
| 查看次数: |
3137 次 |
| 最近记录: |