5
C++ 11에 도입 된 유형 안전 가변 함수를 사용하고 다른 유형에는 사용하지 않으려합니다. 예 :동일한 유형의 매개 변수를 사용하는 유형 안전 가변 함수
template<typename T>
T maxv(T first, T second) {
return first > second ? first : second;
}
template<typename T, typename ... Rest>
T maxv(T first, T second, T ... rest) {
return maxv(first, maxv(second, rest));
}
모든 매개 변수의 유형은 동일합니다, 그래서 그런 걸 쓸 어쩌면 수 :
struct Point { int x,y; };
template<>
Point maxv(Point first, Point second) {
return first.x > second.x ? first : second;
}
maxv({1, 2}, {3, 4}); // no problem
maxv({1, 2}, {3, 4}, {5, 6}); // compile error
그것은와 Mingw g ++ 4.5에서이 오류와 함께 컴파일을 :
error: no matching function for call to 'maxv(<brace-enclosed initializer list>, <brace-enclosed initializer list>, <brace-enclosed initializer list>)'
그는 {5, 6}
유형 Point
의 것을 모르기 때문에
제발/변수/variadic/ –
제발, 당신의 데이터가 실제로 'max_element'과 같은 무언가가 아닌 여러 아닌 집계 변수에 저장되어 있습니까? –
함수를 특수화하지 말고 대신 술어를 전달하십시오. – Xeo