#include <iostream>
using namespace std;
template <size_t N>
typename enable_if<(N > 1), void>::type f(){
cout << N - 1 << ' ';
f<N - 1>();
}
template <size_t N>
typename enable_if<N == 1, void> ::type f() {
cout << 1;
}
int main() {
f<4>();
}
Compiler beschwert sich in Zeile 8:Warum beschwert sich der Compiler, dass f() nicht sichtbar ist?
f< N - 1 >();
Anruf
f
funktionieren, die weder in der Template-Definition ist noch vonADL
gefunden.
Ein bisschen schade, dass der Compiler nicht zeigt (oder Sie es aus diesem Beitrag weggelassen), dass N == 2, wenn dies auftritt. Dieses Problem wird normalerweise auch durch Template-Spezialisierung gelöst ('template <> void f <1>() {}'. – MSalters
Können Sie die Compiler-Version einschließen, und die * gesamte * Fehlermeldung generiert? – Yakk
wurde von Xcode kompiliert und ich habe bereits die gesamte Fehlermeldung gepostet – Sherwin