Czy istnieje sposób na specjalizację szablonu opartą na zakresie wartości zamiast jednego? Wiem, następujący kod jest nieprawidłowy kod C++, ale pokazuje, co chciałbym zrobić. Piszę kod dla maszyny 8-bitowej, więc istnieje różnica w szybkości korzystania z int i znaków.Jak mogę wyspecjalizować szablon C++ dla zakresu wartości całkowitych?
template<unsigned SIZE>
class circular_buffer {
unsigned char buffer[SIZE];
unsigned int head; // index
unsigned int tail; // index
};
template<unsigned SIZE <= 256>
class circular_buffer {
unsigned char buffer[SIZE];
unsigned char head; // index
unsigned char tail; // index
};
Muszę powiedzieć, że jest to przydatne. – chris
Cecha taka jak "std :: conditional" jest trywialna, aby pisać siebie, więc nie potrzebujesz żadnych bibliotek, jeśli ich nie masz: 'szablon struct conditional {typedef typ T; }; szablon struct conditional {typedef U type; }; ' –
Pozdrawiam @KerrekSB, dodałem go do odpowiedzi. – jrok