(Ich kann keinen Namen für dieses Paradigma finden, aber Sie werden einen Bonus-Upvote bekommen, wenn Sie können!) Dieses Template-Paradigma wird verwendet, um zu verhindern, dass ein Array abfällt ein Zeiger:Verwenden des Array-Template-Parameters für eine Rückgabe
template <size_t N>
void foo(const char (&bar) [N]);
Wir sind in der Lage N
im Körper von foo
zu verwenden, um die Größe aus bar
zu erhalten. Mit const char array[] = "lorem ipsum"
verwenden wir diesen Aufruf foo(array)
, um bar
als const char (&) [12]
zu definieren, effektiv 2 Parameter für den Preis von einem übergeben.
Ich möchte diese gleiche Idee verwenden, aber in einer Rückkehr zum Beispiel:
template <size_t N>
const char (&) [N] foo(const char (&bar) [N]);
so, dass ich das Array durch und haben einen weiteren Hinweis auf sie passieren könnte, wie zum Beispiel: auto result = foo(bar)
Der Code habe ich hier ergibt den Fehler:
unrecognizable template declaration/definition
ist das möglich?
EDIT:
Zur Klarstellung, ich möchte eine Funktion Rückkehr zu müssen in der Lage sein, die in dem Äquivalent führen:
auto& result = bar;
Derart, dass result
wird ein const char (&) [*]
wo *
ist die Größe von bar
.
Es heißt "durch Referenz" :-) –
@KerrekSB Hmmm ... Ich hatte auf etwas etwas exotischer gehofft, aber ich nehme an, es ist: J –