Page 1 of 1

Ist es möglich, ConstExPR zu verwenden, wenn der Typ ein Container oder ein STD :: String [Duplicate] ist

Posted: 28 Feb 2025, 08:49
by Anonymous
Zum Beispiel habe ich diese Klasse: < /p>

Code: Select all

template 
class TLVParser {
public:
TLVParser(T value)
: value_(std::move(value)) {
}
void parse(const std::span& buffer, size_t& offset) {
if constexpr (std::is_arithmetic_v)
{
return parsePrimitive(buffer, offset);
}
else if constexpr (std::is_same_v
|| std::is_same_v)
{
return parseStringView(buffer, offset);
}
else if constexpr (std::is_same_v
|| std::is_same_v)
{
return parseContainer(buffer, offset);
}
else
{
static_assert(always_false::value, "Unsupported type for TLV parsing");
}
}

private:
T value_;
};
Wie ich verstehe, String_View , std :: string , std :: vector und std :: span haben einige allgemeine Eigenschaften, die ich den gleichen Analysefunktion erstellen könnte. Gibt es also eine Möglichkeit zu verwenden, wenn Contexpr prüft, ob dieser Typ ein Container ist, ohne ein || für jeden einzelnen zu schreiben, und nur ein Konzept zu verwenden, um zu garantieren, dass dieser Container eine bestimmte Eigenschaften haben sollte, die eine bestimmte Eigenschaften haben sollte, wie in der Reichweite der Bereichsschleife fähig. std :: vector , std :: array oder sogar uint8_t* oder char*?