[問題] std::forward疑問
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
最近看到一個範例,想不懂為何這個x是個lvalue被forward兩次之後變成
rvalue ??我的理解x本來是lvalue,forward應該都還是lvalue阿!!
#include <iostream>
void PrintT(int& t)
{
std::cout << "lvalue" << std::endl;
}
template <typename T>
void PrintT(T&& t)
{
std::cout << "rvalue" << std::endl;
}
template <typename T>
void TestForward(T&& v)
{
PrintT(std::forward<T>(v));
}
void Test()
{
int x = 1;
TestForward(std::forward<int>(x));
}
Output:
rvalue
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.34.163 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1623579964.A.2DF.html
→
06/13 19:03,
2年前
, 1F
06/13 19:03, 1F
→
06/13 19:03,
2年前
, 2F
06/13 19:03, 2F
→
06/13 19:04,
2年前
, 3F
06/13 19:04, 3F
→
06/13 19:06,
2年前
, 4F
06/13 19:06, 4F
→
06/13 19:08,
2年前
, 5F
06/13 19:08, 5F
→
06/13 19:09,
2年前
, 6F
06/13 19:09, 6F
→
06/13 19:09,
2年前
, 7F
06/13 19:09, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章