Portál AbcLinuxu, 8. května 2025 06:40
int[5]tak musím testovať
is_same_v<T, int[5]>ale čo ak dopredu netuším veľkosť pola a potrebujem odtestovať či premenná má pole nejakého typu, ľubovolnej velkosti? testujem to zatiaľ takto:
if constexpr (std::is_array_v<InputType> && std::is_same_v<InputType, ArrayType[std::extent_v<InputType>]>) { //niečo } else { static_assert(false, "Chyba, nesprávny typ") }Funguje to akurát som z toho chcel urobiť nejaký znovupoužiteľný kus kódu (trait, makro, alebo hocičo iné) a to už bolo nad moje sily. Celá tá template časť C++ je deklaratívna, pripomína mi trošku funkcionálne programovanie a vyzerá to dosť zaujímavo.
Řešení dotazu:
noa nestačilo by ti jakoby tam tu velikost pole prostě dycky zistit hele?? :O :O
template <typename T, size_t n> constexpr size_t array_size(const T (&)[n]) { return n; }
dyžtak se neuraz ale mam taky takovej pocit že se snažíš to cpp přivohnout ze silně typovýho jazyka na slabě typovej s timže tu kontrolu typů chceš asi nějak řešit sám :O ;D
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.