ile aynı türden parametreler var C++ 11'de sunulan, ancak farklı türlerde olmayan, tür güvenli değişken işlevler kullanmak istiyorum. Bir örnek:tür güvenli parametreleri
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));
}
tüm parametrelerin tipi aynıdır, nedenle böyle bir şey yazmak için belki mümkündür:
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
O mingw g ++ 4,5 bu hata ile derler:
error: no matching function for call to 'maxv(<brace-enclosed initializer list>, <brace-enclosed initializer list>, <brace-enclosed initializer list>)'
o {5, 6}
tip Point
ait olduğunu bilmiyorlar
Lütfen s/variable/variadic/ –
Sormak zorundayım, verileriniz 'max_element' gibi bir şeyin uygun olmadığı birden çok toplu olmayan değişkende depolanıyor mu? –
Fonksiyonu uzmanlaştırma, bunun yerine bir yüklem iletme. – Xeo