Es gibt da viele Möglichkeiten, je nachdem was Du tatsächlich möchtest.
Im einfachsten Fall alle Muster in ein const Array packen, und dann mit patternWahl als Index auswählen.
Wenn Du Funktionen möchtest, die können direkt in ausgabePattern reinschreiben, dafür ist keine Zuweisung notwendig. Eine Zuweisung braucht man nur, wenn ausgabePattern ein Pointer ist, der dann auf das ausgewählte Array zeigen soll.
Wie wird das Pattern denn weiterverwendet, Codeschnipsel?
Die Funktion könnte einen Zeiger auf ein (statisches) Array zurückliefern.
Aber leider nicht dein CRGB ausgabePattern[] überschreiben. (Oder geht das inzwischen mit c++11 ?)
Wieso schade? Es ist ja call-by-reference. Allerdings mit Zeigern statt Referenzen und es geschieht automatisch, da die Array Variable in einen Zeiger zerfällt.
Das hat den Vorteil, dass dann sizeof() korrekt funktioniert. Aber bringt auch nichts da man die Größe einfacher mit ALL_LEDs schon hat. Das sieht man nicht oft, da man Funktionen meistens so schreiben möchte dass man Arrays beliebiger Größe übergeben kann. Hier würde es aber gehen.
Ansonsten ist es aber das übliche Prinzip in C, dass du bei den ganzen Standard C Funktionen siehst: wenn man einen Puffer mit irgendetwas füllen möchte übergibt man ihn vorher an die Funktion.