Tôi có lớp này:Tăng thời gian biên dịch biến với mỗi instantiation của một lớp generic
template <typename T, uint64_t N>
struct Probe {
static const uint64_t Counter = N;
typedef T Type;
};
Mà tôi sử dụng như:
typedef Probe <int, 0> FirstIntProbe;
typedef Probe <int, 1> SecondIntProbe;
typedef Probe <float, 2> FloatProbe;
Có thể tạo ra một thời gian biên dịch \ phương pháp vĩ mô cho phép tôi khởi tạo lớp này mà không chỉ định thông số thứ hai như:
typedef Probe <int, Something?> FirstIntProbe;
typedef Probe <int, Something?> SecondIntProbe;
typedef Probe <float, Something?> FloatProbe;
Tôi giả định điều này là không thể, nhưng sau đó một lần nữa tôi đã nhìn thấy mọi người làm những việc trong C + + tôi sẽ không nghĩ là có thể trước đây.
Cập nhật:
- Nó không phải là cần thiết để tăng một, nó chỉ quan trọng là mỗi đầu dò có nó là số riêng.
- Không cần thiết phải có số duy nhất trên các tệp .cpp khác nhau \ đơn vị dịch.
Điều quan trọng là giá trị của N bắt đầu bằng 0 và luôn luôn được tuần tự? Và về hành vi của các đơn vị dịch thuật thì sao? Một số trình biên dịch có '__COUNTER__', có thể là đủ cho mục đích của bạn. –
Cập nhật câu hỏi –