Bu ilginç iplik bakıyordu: https://stackoverflow.com/a/16596463/2436175şablon şablon parametreleri: Bildirimi daha da küçük yapabilir miyim?
Benim spesifik durum endişeleri OpenCV bir std cv kabı :: Point_ ve cv :: Rect_ kullanarak templated işlevi bildirerek. karşı Ben şablon istiyorum:
- std kabın tip I cv :: Point_ ve cv tanımını tamamlamak için
- temel veri tiplerini kullanacaktır :: Rect_
Ben bitti
template <typename T, template <typename, typename> class Container_t>
void CreateRects(const Container_t<cv::Point_<T>,std::allocator<cv::Point_<T> > >& points,
const T value,
Container_t<cv::Rect_<T>,std::allocator<cv::Rect_<T> > >& rects) {
}
bu ince derler:
aşağıdaki bildirge 0void dummy() {
const std::vector<cv::Point_<double> > points;
std::vector<cv::Rect_<double> > rects;
CreateRects(points,5.0,rects);
}
(Ben de, ben de, örneğin kullanabileceği CreateRects<double>(points,5,rects)
gördük)
, mesela benim beyanı daha kompakt hale getirmek için herhangi bir şekilde varolduğunu acaba Varsayılan ayırıcının 2 katını belirtmeye gerek kalmadan.
template <typename T, class C1, class C2>
void CreateRects(const C1& points,
const T value,
C2& rects) {
}
O okumak daha kolay derler ve türleri uyumsuz,, bir derleyici hatası alırsınız: yaklaşık gibi basit kodla neler oluyor
Neden istiyorsun etmek beyanı sıkıştırmak? Performans artışı yoktur ve derleme sırasında birikmiş zaman, StackOverflow'a gönderilerek harcanmıştır. –
@ThomasMatthews İyileştirebiliyor olsaydım, herhangi bir şekilde okunabilirlik olabilir, bu benim kodumla daha sonra uğraşmak zorunda kaldığım zamana (hatta kendime) zaman kazandırabilir. Ama bir noktan var. Bazen sadece sorular soruyorum, çünkü onları ilginç buldum ve derhal kullanışlı değil. – Antonio