当我将其传递给模板其参数是通用引用时,它是一个直译为“ 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] ??
有什么问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)