簡體   English   中英

帶成員(operator [])函數的invoke_result

[英]invoke_result with member (operator[]) function

如何為成員函數正確調用invoke_result? 或專門用於操作員成員功能。 我嘗試了std::invoke_result<T::operator[], size_type>失敗。 在這種情況下正確的語法是什么?

別。 使用decltype(std::declval<T&>()[size_type{}])或類似的東西(根據需要調整值類別和cv限定)。

invoke_result用於具有可調用/可調用對象的對象。 您沒有一個,所以不要試圖將方釘錘成圓孔。

如下呢?

std::invoke_result<decltype(&T::operator[]), T, size_type>

但是此語法應與單個(而不是模板) operator[]

如果是模板或重載,則應避免std::invoke_result並遵循TC建議的decltype()方法

或者,也許可以將調用包裝在lambda函數中,然后將std::invoke_result應用於lambda(如果您確實非常想使用std::invoke_result )。

關於std::invoke_result語法,請注意,指向成員函數的指針與指向常規函數的指針完全不同。 無論如何,您可以粗略地將其視為指向常規函數的指針,該函數接收與調用其方法的對象相對應的附加參數(在第一個位置)。

因此,在您的示例中,第一個T參數表示調用其運算符的T類型的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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