Tôi đã nhìn vào chủ đề thú vị này: https://stackoverflow.com/a/16596463/2436175thông số mẫu mẫu với vùng chứa và phân bổ mặc định: tôi có thể khai báo gọn hơn không?
cụ thể mối quan tâm trường hợp của tôi định nghĩa một hàm templated sử dụng một container std của cv :: Point_ và cv :: Rect_ từ opencv. Tôi muốn template chống lại:
- các loại container std tôi sẽ sử dụng
- các kiểu dữ liệu cơ bản để hoàn thành định nghĩa của cv :: Point_ và cv :: Rect_
tôi đã kết thúc với miêu tả sau:
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) {
}
mà biên dịch tốt với điều này:
void dummy() {
const std::vector<cv::Point_<double> > points;
std::vector<cv::Rect_<double> > rects;
CreateRects(points,5.0,rects);
}
(Tôi cũng đã thấy rằng tôi cũng có thể sử dụng, ví dụ, CreateRects<double>(points,5,rects)
)
Tôi đã tự hỏi nếu có tồn tại cách nào để thực hiện kê khai của tôi nhỏ gọn hơn, ví dụ mà không cần phải chỉ định 2 lần cấp phát mặc định.
Tại sao bạn muốn nhỏ gọn tuyên bố? Không có hiệu suất đạt được và thời gian tích lũy được lưu trong quá trình xây dựng, đã bị lãng phí bằng cách đăng lên StackOverflow. –
@ThomasMatthews Nếu tôi có thể cải thiện khả năng đọc theo bất kỳ cách nào, nó có thể tiết kiệm thời gian cho mọi người (ngay cả bản thân tôi) phải đối phó với mã của tôi sau này. Nhưng bạn có một điểm. Đôi khi tôi chỉ đặt câu hỏi bởi vì tôi thấy chúng thú vị, và không nhất thiết phải hữu ích ngay lập tức. – Antonio