Wie überprüfe der Vorlagenparameter ein Container mit fester Länge N unter Verwendung von Konzepten?C++

Programme in C++. Entwicklerforum
Guest
 Wie überprüfe der Vorlagenparameter ein Container mit fester Länge N unter Verwendung von Konzepten?

Post by Guest »

Ich möchte ein Konzept haben, das überprüft, ob ein Typ ein Container
mit fester Länge ist. Der Typ könnte ein Array im C-Stil sein, ein std :: array , ein std :: span oder ein benutzerdefinierter Container. Ich kann nach dem Zustand
Container wie im folgenden Code gezeigten Zustand suchen, aber ich kann es nicht auf
nach dem Längenzustand prüfen. < /P>

Code: Select all

template 
concept fixed_container =
requires (T const& t)
{
{std::size(t)} -> std::same_as;
{std::begin(t)};
{std::end(t)};
}
// && std::declval().size() == N // Error: 'declval() must not be used!'
// && T::size() == N // Error: 'call to non-static member function without an object argument'
;

// These should all be correct
static_assert( fixed_container);
static_assert(!fixed_container);
static_assert( fixed_container);
static_assert(!fixed_container);
static_assert( fixed_container);
static_assert(!fixed_container);
< /code>
Ideen?   requires (T const& t)
{
{std::size(t)} -> std::same_as;
{std::begin(t)};
{std::end(t)};
}
< /code>
kann durch eine einzelne Zeile < /p>
ersetzt werden   std::ranges::sized_range

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post