如果我有一個非成員constexpr函數取基準參數它必須是恆定的參考Constexpr非成員函數和參考的Argos
0
A
回答
0
如果我有一個非成員constexpr函數取基準參數它有是不斷的參考?
不,它不會但它更好。
constexpr
函數的主要用途是在編譯時計算表達式。將非const
引用傳遞給這樣的函數沒有任何意義。如果你選擇修改函數中的輸入對象,我不得不問你爲什麼?如果您不修改輸入對象,最好使用const
引用,就像將不會修改對象的成員函數設爲const
成員函數總是一個好主意。
下面的代碼不工作,因爲當該函數需要使用非const
參考
struct Foo { int i; };
constexpr bar(Foo& f) { return f.i * 2; }
int main()
{
int arr[bar({20})]; // Can't use a temp object
}
下面的代碼工作的臨時對象不能被使用。該函數可以用於臨時對象以及可以用作左值的對象。
struct Foo { int i; };
constexpr bar(Foo const& f) { return f.i * 2; }
int main()
{
int arr[bar({20})];
Foo f{20};
int v = bar(f);
}
+0
任何引用或鏈接 –
+0
@BlairDavidson,我更增添了幾分的描述來解釋我的「更好」的資格。希望它是有道理的。 –
0
簡短的回答:
號龍答:不會,因爲const
操作者只需確保非成員函數的數據不會被改變 - 但是如果你傳遞一個 參數,這個外國參數可以改變
相關問題
- 1. 未定義的成員函數參考
- 2. 參考非靜態成員函數必須在模板類
- 3. 參考指針調用成員函數
- 4. constexpr成員函數不使用這個?
- 5. 數據成員int參考
- 6. 在非類成員函數的參數中傳遞類成員函數
- 7. constexpr函數和硬編碼參數
- 8. constexpr函數不帶參數
- 9. 成員函數非對象
- 10. 非成員函數模板
- 11. 將非會員非朋友函數加入到成員函數
- 12. 函數模板參數和模板成員函數參數
- 13. Effective C++項目23首選成員函數的非成員非朋友函數
- 14. 通個人會員和非成員函數指針作爲參數
- 15. 模板函數和常量/非常量參考參數
- 16. 運算符重載:成員函數與非成員函數?
- 17. 調用從const成員函數非const成員函數指針
- 18. 從const成員函數調用非const成員函數
- 19. 參考和指針的函數參數
- 20. 調用不帶對象參數的非靜態成員函數
- 21. 轉發的引用,參考限定符和模板的成員函數
- 22. 成員函數和
- 23. 靜態constexpr成員存儲
- 24. 指針到成員函數在參考類
- 25. 參考非共享成員需要的對象引用
- 26. 我如何參考不同類別的非靜態成員c#
- 27. 調用非對象的成員函數
- 28. 非對象的成員函數check()
- 29. 調用非對象的成員函數
- 30. 模板專精與靜態constexpr成員(函數指針)
請發表[MCVE] – Jonas