Tôi có rất nhiều mã mẫu. Kể từ khi mã mẫu xấu không ném một lỗi biên dịch, trừ khi nó được biên dịch, có cách nào tôi có thể kiểm tra những mẫu chức năng trình biên dịch thực sự 'biên dịch' và được bỏ qua hoàn toàn?Tôi có thể kiểm tra các mẫu chức năng nào có hoặc chưa được tạo ít nhất một lần không?
EDIT 2:
Nếu một đặc biệt lớp mẫu hoặc hàm mẫu được khởi tạo một lần, đối với bất kỳ loại tham số, sau đó là OK. Tôi muốn danh sách các mẫu chức năng/lớp không bao giờ được khởi tạo dưới mọi hình thức.
Một ví dụ cụ thể là như sau. Chúng là hai hàm mẫu riêng biệt, và tôi muốn biết nếu một trong hai hoặc cả hai không bao giờ được khởi tạo.
template <typename T_InputItr, typename T_Distance>
void advance(T_InputItr& aItr, T_Distance aN, bidirectional_iterator_tag)
template <typename T_InputItr, typename T_Distance>
void advance(T_InputItr& aItr, T_Distance aN, random_access_iterator_tag)
EDIT: Hiện nay, đối với các lớp học, tôi nhanh chóng chúng trong file .cpp
bằng tay như thế này:
template TClass<int>;
cho tất cả các loại Tôi quan tâm Đó là tốt và tốt.. Nhưng đó là nếu tôi nhớ làm điều đó. Đôi khi tôi cần phải viết rất nhiều lớp/chức năng mẫu nhỏ mà tôi quên tạo một số mẫu chức năng/lớp học /mẫu theo cách thủ công và tìm hiểu sau này xuống đường. Tôi muốn trình biên dịch cho tôi biết điều đó.
Hoặc, nếu tôi có thể nhận danh sách các mẫu chức năng/lớp được khởi tạo (cho bất kỳ tham số nào), thì tôi có thể so sánh danh sách đó với danh sách đầy đủ mà tôi có thể grep trong mã.
Một lợi ích khác sẽ là 'kiểm tra' phương pháp nào được biên dịch trong lớp mẫu sử dụng đặc điểm kiểu để chọn lọc biên dịch một số chức năng nhất định. Tôi muốn chắc chắn logic của mình để chọn các chức năng chính xác là chính xác trước khi tiếp tục.
Và bạn sẽ làm gì nếu bạn có thể kiểm tra điều đó? – Jon
@Jon: Tôi sẽ thử nghiệm nó bằng cách khởi tạo thủ công nó với các loại giả để đảm bảo cú pháp của nó là chính xác, ít nhất là đối với các loại mà tôi biết nó có thể mất. – Samaursa
Vì vậy, có câu trả lời của bạn: thực hiện một dự án thử nghiệm nơi bạn gọi * tất cả * chức năng templated với * tất cả * loại mà bạn biết họ có thể thực hiện. Nếu dự án không biên dịch bạn có vấn đề. :) – Jon