[英]Error C2440: 'return' : cannot convert from 'int [2]' to 'int (&&)[2]'
[英]error: C2440 'return': cannot convert from 'int' to T
我在 VS2017 和 g++ 上都遇到了這個錯誤,編譯時符合 C++17。 誰能解釋一下?
template<typename T>
T doit(T&& arg) {
int result{ arg * 2 };
return result; // works
// return arg; // works
// return arg*2; // error: C2440 'return': cannot convert from 'int' to T
}
int main() {
int i {42};
cout << doit(i) << endl;
return 0;
}
typename T
可以是引用類型。
std::remove_reference<T> doit(T&& arg) {
應該解決這個問題,因為它強制 return 語句進行復制,而不是潛在地嘗試將 r 值( T&&
)綁定到std::remove_reference<T> doit(T&& arg) {
值引用( T&
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.