Zum Beispiel habe ich eine Klasse:
class A
{
enum {N = 5};
double mVariable;
template
void f(T& t)
{
g(mVariable); // Aufruf einer Funktion unter Verwendung von mVariable.
f(t); // Gehe zur nächsten Schleife
}
template
void f(T& t)
{} // Stoppe die Schleife, wenn N erreicht ist.
};
Teilspezialisierung ist in Funktionstemplates nicht erlaubt. Wie umgehe ich es in meinem Fall?
Ich habe das Beispiel von Arne Mertz leicht geändert, wie:
template
struct A
{
enum {N = n};
...
};
und verwende A wie:
A<5> a;
Ich kann nicht auf Visual Studio 2012 kompilieren. Handelt es sich um einen Compilerfehler oder etwas anderes? Es ist ziemlich seltsam.
EDIT: Überprüft. Es handelt sich um einen Visual Studio-Bug. :(
Ich denke, Nim bietet den einfachsten Weg, um es zu implementieren.