Die Vorlagenrekursion stoppt nach 7 Rekursionen (C++)C++

Programme in C++. Entwicklerforum
Anonymous
 Die Vorlagenrekursion stoppt nach 7 Rekursionen (C++)

Post by Anonymous »

UPDATE:
Die Absicht des folgenden Codes bestand darin, eine Version von std::max() zu erstellen, die es einem ermöglicht, eine beliebig große Anzahl von Argumenten einzugeben.
Die hier gestellte Frage wurde beantwortet, indem ein Fehler behoben wurde, auf den @tkausl in den Kommentaren hingewiesen hat.
Ich habe den folgenden Code nicht nur zur Lösung eines Problems, sondern auch als Übungsbeispiel für die Vorlagenrekursion für die Zukunft entwickelt Projekte:
(kompiliert in C++ 23 mit g++, MinGW-W64 x86_64, Version 13.1.0, auf einem Windows 11-Betriebssystem).

Code: Select all

#include 
#include 

// base cases
template
auto multi_max(T1 first, T2 second, Args_a... args_a)
{
if constexpr (sizeof...(args_a) == 0)
{
return 0;
}

if constexpr(sizeof...(args_a) == 1)
{
return static_cast  (first);
}

if constexpr(sizeof...(args_a) == 2)
{
return static_cast  (std::max(first, second));
}

else
{
return static_cast  (multi_max(std::max(first, second) , (args_a)...));
}   }

// recursion code
template
auto multi_max(Args_a... args_a)
{
auto answer = multi_max(args_a...);
return static_cast  (answer);
}
Wenn ich dies mit der folgenden main()-Funktion teste, erhalte ich die Antwort 110:

Code: Select all

// printing result, test 1
int main()
{
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post