C 怎麼用concept 判斷型別是不是容器呢?

時間 2021-06-06 11:19:27

1樓:「已登出」

好問題啊。

雖然我很少遇到這樣的需求(除了在某些設計不太好的系統裡面),但也寫過類似的 Concepts 和 SFINAE。很多時候我們希望判斷乙個型別是不是容器,但實際上我們只是想通過 range-for 迴圈表示式遍歷而已。另外需要注意,range-for 迴圈表示式不僅接受傳統的容器,還接受陣列以及使用者定義的 std::

begin/std::end 過載。

請參考:

template

BeginIt

,class

EndIt

>concept

IterableRange

=requires

(BeginIt

begin_it

,EndIt

end_it);

;requires

!std

::is_void_v

begin_it

)>;;

};///

///template

T>concept

Iterable

=std

::is_array_v

||requires(T

value);

;requires

IterableRange

(value

.begin

()),

decltype

(value

.end

())>;}

||requires(T

value);

;requires

IterableRange

(std

::begin

(value

)),decltype

(std

::end

(value

))>;};

怎麼判斷腹瀉型別?

麥冬 小兒秋季為啥容易腹瀉 小兒脾常不足 孩子的臟腑比較嬌嫩,小脾的戰鬥能力本身就比較弱,加上秋日風寒的侵襲,亦或是家長的餵養不當,都會給小脾造成雪上加霜的局面,這吃進去的食物也就難以正常運化 中醫講究辨證治論,就秋小季兒腹瀉來,講以寒濕最瀉為常見,其次寒是溼中又夾熱雜的腹瀉 寒瀉溼的寶寶鬧肚子,時...

c語言有辦法判斷(比較)變數型別嗎?

囧天大聖 你可以試一試函式過載來模擬一下,雖然沒那麼完美int Type int var int Type unsigned int var int Type float var 之後這麼識別,反正最後編譯器會優化掉的int int var 15555 float fvar 45.9L if Typ...

怎麼判斷自己的脫髮型別?

頭髮助手 1 雄性激素脫髮 遺傳性脫髮 特徵是M型或者禿頂,一般20歲左右就會有脫髮的跡象,頭髮愛出油,家族有遺傳。2 產後脫髮 產後脫髮屬於典型的急性休止期脫髮,潛伏期為8 13周,但也可至產後7個月才開始。一般胎次越多,脫髮越嚴重。主要原因是激素水平不穩,精神因素,飲食不平衡等。3 精神性脫髮 ...