템플릿 매개 변수를 함수 매개 변수로 사용하지 않고 가변 템플릿을 사용할 수 있습니까?함수 매개 변수가없는 Variadic 템플릿
#include <iostream>
using namespace std;
template<class First>
void print(First first)
{
cout << 1 << endl;
}
template<class First, class ... Rest>
void print(First first, Rest ...rest)
{
cout << 1 << endl;
print<Rest...>(rest...);
}
int main()
{
print<int,int,int>(1,2,3);
}
을하지만 사용하지 않을 때, 그것은 컴파일되지 않습니다과 모호함에 대해 불평 :
내가 그들을 사용하면 컴파일
#include <iostream>
using namespace std;
template<class First>
void print()
{
cout << 1 << endl;
}
template<class First, class ... Rest>
void print()
{
cout << 1 << endl;
print<Rest...>();
}
int main()
{
print<int,int,int>();
}
불행하게도 클래스 I가 템플릿 매개 변수는 인스턴스화 할 수 없으므로 (템플릿 함수 내부에서 호출되는 정적 함수가 있음) 제공하고 싶습니다. 이렇게하는 방법이 있습니까?
'표준 : declval()'. 모든'T'를위한 작품, constructible 여부. –
인수가없는 버전이 작동하지 않는 이유는 : 인수가 없으면'print'과'print '모두 똑같이 좋지만'print (3)'인수는'print (3, {})'(여기서'{}'는 "아무것도"를 의미하지 않습니다). CatPusPus가 제시하는 것처럼 과부하를 사용하지 않는 것이 표준 방법입니다. 어쨌든 인수를 추론하지 않으므로 가장 간단한 솔루션입니다. –
나는 대답을 게시 하겠지만 n.m. 이미 게시했습니다. – bames53