c++ - 是文字,比如“Hello world”,当我将它传递给它的参数是通用引用的模板时是一个右值?
问题描述
我的代码如下:
template <typename T>
void func(T&& param){
using boost::typeindex::type_id_with_cvr;
cout << "T = " << type_id_with_cvr<T>().pretty_name() << " , "
<< "param = " << type_id_with_cvr<decltype(param)>().pretty_name() << '\n';
}
int main(void){
const char name[] = "J. P. Briggs";
func(name);
func("Hello World");
func(24);
return 0;
}
结果:
T = char const (&) [13] , param = char const (&) [13]
T = char const (&) [13] , param = char const (&) [13]
T = int , param = int&&
文字“Hello World”不是右值吗?如果是这样,为什么语句的结果func("Hello World");
是T = char const (&) [13] , param = char const (&) [13]
而不是T = char const[13] , param = char const(&&) [13]
??
有什么不对 ?
解决方案
推荐阅读
- oracle - 查询 user_tables 结果为空
- python - AttributeError: 'dict_values' 对象没有属性 'extend' - repo 同步
- excel - Excel转置和连接函数
- git - 如何在新 Visual Studio 2019 的新 git 体验界面中添加要提交的工作项
- image-processing - 太阳能光伏阴影分析的国家开放激光雷达数据如何实现自动屋顶3d建模?
- c# - 使用 MaterialDesignInXamlToolKit 输入法输入框无法正确定位到 TextBox 的边缘
- excel - 我找不到数据透视表的数据源
- r - R函数转换为宽格式
- c - 为什么我没有得到随机数?
- java - 如何在 url 中使用 API 密钥?请帮忙,看起来很简单,但我完全卡住了