簡體   English   中英

引用類型作為類型特征/概念參數

[英]reference type as type traits / concept argument

在概念std::uniform_random_bit_generator的規范強制實現中,要求在滿足此概念的類型G的實例上調用operator()應返回與G::min()G::max()相同的類型.

為什么使用std::same_as<std::invoke_result_t<G&>>代替std::same_as<std::invoke_result_t<G>> 有什么區別?

std::invocable<G&>檢查是否可以調用G類型的左值(不帶參數)。 std::invocable<G>檢查是否可以調用G類型的右值(不帶參數)。

std::invoke_result_t等效地是相應的返回類型。

換句話說,這保證了生成器可以被聲明為變量然后被調用,例如

G g{/*args*/};
auto res = g();

但它不保證可以直接調用G類型的臨時對象,例如

auto res = G{/*args*/}();

這不是通常使用隨機數生成器的方式。

暫無
暫無

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

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