簡體   English   中英

錯誤:C2440“返回”:無法從“int”轉換為 T

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM