:가변 인자 템플릿 기능 나는 다음과 같은 컴파일하기 위해 노력하고있어
g ++ 4.8과 함께 다음과 같은 컴파일러 오류로 연결#include <vector>
#include <array>
template <typename T>
void sort(T &container) {}
template <typename F, typename T, typename ...Tail>
void sort_containers(F sort_func, T &container, Tail &...tail) {
sort_func(container);
sort_containers(sort_func, tail...);
}
template <typename F, typename T>
void sort_containers(F sort_func, T &container) {
sort_func(container);
}
int main() {
std::vector<int> x = {1,2,3};
std::vector<double> y = {1.0, 2.0, 3.0};
std::array<char, 3> z = {{'d' , 'b', 'c'}};
sort_containers(sort, x, y, z);
}
:
error: no matching function for call to
‘sort_containers(<unresolved overloaded function type>,
std::vector<int>&, std::vector<double>&, std::array<char, 3u>&)’
I sort_containers
에 전달할 때 sort
에 대한 템플릿 매개 변수를 지정해야한다는 것을 알고 있지만 가변 템플릿 함수가있는 경우 어떻게 작동하는지 잘 모르겠습니다.
이것은 variadic이 아닌 템플릿'sort_three_containers'에서 작동하는 것처럼 작동합니다. 즉, 너무 잘되지 않습니다. 함수 (템플릿)가 아니라 멤버 함수 템플릿이있는 객체를 전달해야 정렬이 수행되므로 'sort_containers'를 호출 할 때마다 인스턴스가 생성됩니다. –
비 variadic 템플릿을 사용하면 다음과 같이 할 수 있습니다 : http://ideone.com/jBg5yT,이 예제는'sort_three_containers' – countfromzero