C ++ - Vorlagenparameter in Array-Dimension

8

Ich habe den folgenden Code mit Vorlagen und Array-Dimension als Vorlage nicht-Typ-Parameter

%Vor%

sollte der Compiler nicht in der Lage sein, das zweite f ohne expliziten Template-Parameter zu instanziieren? Ich benutze g ++ 4.1

    
Anycorn 17.11.2009, 00:55
quelle

4 Antworten

28

Es funktioniert, wenn Referenzen verwendet werden:

%Vor%     
Georg Fritzsche 17.11.2009, 01:02
quelle
1

Leider nein, denn wenn Sie double c[5] an f () übergeben oder irgendein Array an irgendeine Funktion, die ein Array für diese Angelegenheit benötigt, verlieren Sie die Größeninformation. Sie übergeben nur einen Zeiger.

Bearbeiten: Aber sehen Sie sich die Antwort von gf für eine Problemumgehung an.

    
Charles Salvia 17.11.2009 00:58
quelle
0

Nein, denn bei einem anderen Aufruf könnte das Argument von überall her kommen. der Compiler kann Ihre Zeiger zur Laufzeit sicher nicht verfolgen.

edit: BTW, das funktioniert für mich, erfordert aber -std = c ++ 0x (ich benutze gcc 4.4)

%Vor%     
just somebody 17.11.2009 00:59
quelle
-1

Dies könnte Ihnen bei Ihrem größeren Problem helfen (was auch immer das sein mag). Dadurch können Sie die Größe / den Typ des Arrays bei der Kompilierung abfragen.

%Vor%

Justin

    
justin 17.11.2009 01:05
quelle

Tags und Links