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