#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>();
}
Компилятор жалуется на линии 8:Почему компилятор жалуется, что f() не отображается?
f< N - 1 >();
вызов функции
f
который не является ни видно в определении шаблона, ни найденADL
.
Немного досадно, что компилятор не показывает (или вы его не указали из этого сообщения), что N == 2, когда это происходит. Кроме того, эта проблема обычно решается специализацией шаблона ('template <> void f <1>() {}'. – MSalters
Можете ли вы включить версию компилятора и генерируемое сообщение об ошибке * whole * – Yakk
было скомпилировано Xcode, и у меня есть уже отправлено полное сообщение об ошибке – Sherwin