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