Nửa giờ trước, tôi phát hiện ra các tham số mẫu variadic và bây giờ tôi hoàn toàn nối.C + + varadic mẫu chấm dứt lớp
Tôi có lớp trừu tượng dựa trên lớp trừu tượng cho chốt đầu ra vi điều khiển. Tôi muốn nhóm một số chân đầu ra để tôi có thể xử lý chúng như một pin. Đoạn code dưới đây làm việc, nhưng tôi nghĩ rằng tôi sẽ có thể chấm dứt đệ quy trên 0 thông số thay vì trên 1.
template< typename pin, typename... tail_args >
class tee {
public:
typedef tee<tail_args...> tail;
static void set(bool b){
pin::set(b);
tail::set(b);
}
};
template< typename pin >
class tee<pin> {
public:
static void set(bool b){
pin::set(b);
}
};
Tôi cố gắng này nhưng trình biên dịch (gcc) dường như không phải đưa nó vào tài khoản:
template<>
class tee<> : public pin_output {
public:
static void set(bool b){}
};
Thông báo lỗi dài nhưng về bản chất nó không có chữ số tee <>. Có điều gì sai trái với tee tôi <> hay không là nó có thể kết thúc đệ quy
Phiên bản nào của GCC bạn đang sử dụng? Có phải GCC 4.8 và bạn đã vượt qua cờ '-std = C++ 11' (cũng với' -Wall')? –
Loại của bạn phải là 'template class tee', và trường hợp chấm dứt của bạn phải là' template <> class tee <> {}; '. –
@Basile: 4.7.2; Tôi đã sử dụng -std = C++ 0x; sử dụng -std = C++ 11 -Wall không thay đổi; –