这是TPNGImage
std::forward
这个纯净的左值字符串template< class T >
T&& forward( typename std::remove_reference<T>::type& t );
如何作为"HelloWorld!"
中的左值引用绑定到t
?
std::forward
答案 0 :(得分:6)
首先,"HelloWorld!"
是左值。 (const char数组)。
但是你的代码使用了重载:
template< class T >
T&& forward( typename std::remove_reference<T>::type&& t );
C字符串文字可以绑定到std::string&&
,通过衰减到char const *
并用于初始化临时std::string
。
请注意,稍后使用rstr
将是未定义的行为,因为临时停止存在于语句的末尾。临时到rstr
的生命周期没有生命周期延长,因为rstr
绑定到xvalue,但只有当引用绑定到prvalue时才会发生扩展。