Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: специализация шаблонов для диапазона и/или
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
ig_z
Вопрос не по ИАРу, но тем не менее.

Есть ли в стандарте языка способ специализировать шаблон для диапазона значений пар-ра (ну или для перечисленных значений этого пар-ра).
Например:
имеем шаблон с параметром типа инт. Хотелось бы иметь одну специализацию для диапазона значений параметра 0..255, другую специализацию для диапазона 256..65535, и тд.
Oldring
Цитата(ig_z @ Nov 12 2007, 18:51) *
Есть ли в стандарте языка способ специализировать шаблон для диапазона значений пар-ра (ну или для перечисленных значений этого пар-ра).


В плюсах это сделать можно, но несколько извращенно.

Делаете шаблон-реализацию с неким шаблонным параметром. Например, size_t sizeOfVars. Пишете две специализации - для параметра, равного 1 и 2. Потом пишете другой шаблонный класс - обертку со всеми inline функциями, который будет использовать нужную конкретную специализацию базового шаблона. Например, от нее отнаследовавшись.
Непомнящий Евгений
Ну если диапазон 0..255 и 256..65535 - то писать обертки наверное задолбаешься. Тогда уж определить макрос типа
Код
#define DIAPAZON(a, b) ( ((a)==0 && (b)==255) ? 1 : 2)

template<int diapazonNum>
class TMyClass
{};

template<int diapazonNum = 1>
class TMyClass
{};

template<int diapazonNum = 2>
class TMyClass
{};


TMyClass<DIAPAZON(0, 255)> a;
TMyClass<DIAPAZON(256, 65535)> b;
alexander55
Цитата(ig_z @ Nov 12 2007, 18:51) *
Есть ли в стандарте языка способ специализировать шаблон для диапазона значений пар-ра (ну или для перечисленных значений этого пар-ра).
Например:
имеем шаблон с параметром типа инт. Хотелось бы иметь одну специализацию для диапазона значений параметра 0..255, другую специализацию для диапазона 256..65535, и тд.

Использование шаблона подразумевает знание параметра на этапе компиляции.
Не проще ли тогда иметь переопределяемую функцию для параметров: char и unsigned short ?
Непомнящий Евгений
Цитата(alexander55 @ Nov 14 2007, 12:15) *
Использование шаблона подразумевает знание параметра на этапе компиляции.

Не понял вашей мысли - в чем противоречие между специализацией шаблона и знанием параметра на этапе компиляции?
Цитата
Не проще ли тогда иметь переопределяемую функцию для параметров: char и unsigned short ?

Тоже не понял - в чем связь между шаблоном класса/функции и перегрузкой функции?
alexander55
Цитата(Непомнящий Евгений @ Nov 14 2007, 13:27) *
Не понял вашей мысли - в чем противоречие между специализацией шаблона и знанием параметра на этапе компиляции?

Противоречия нет.

Цитата(Непомнящий Евгений @ Nov 14 2007, 13:27) *
Тоже не понял - в чем связь между шаблоном класса/функции и перегрузкой функции?

Я имею ввиду, что есть альтернатива.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.