Jes*_*ood 5 c++ gcc boost c++11
例:
#include <iostream>
#include <boost/call_traits.hpp>
#include <type_traits>
boost::call_traits<int>::param_type f()
{
return 1;
}
int main()
{
std::cout << std::boolalpha;
std::cout <<
std::is_const<boost::call_traits<int>::param_type>::value
<< std::endl; // true
std::cout << std::is_const<decltype(f())>::value << std::endl; // false
}
Run Code Online (Sandbox Code Playgroud)
题:
除非,我做错了什么,我认为我应该true为两者做好准备,但false后者的gcc 4.7.0输出.有什么我想念的吗?
非类型的rvalue永远不是const限定的.只有类型rvalues可以是const限定的.
因此,即使函数f声明为返回a const int,即使函数的类型f是const int(),调用表达式f()也是类型(非常量)的右值int.
(在新的C++ 11表达式分类中,调用表达式f()是类型的prvalueint.同样的规则适用:C++11§3.10/ 4声明"非类prvalues始终具有cv非限定类型.")
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |