Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Chel_s_gori
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 7
1

Typename в шаблонах класса

18.05.2016, 15:07. Просмотров 133. Ответов 2
Метки нет (Все метки)

В таком шаблоне:
C++
1
2
template <typename T, int n, bool islong=???>
class CounterA{...
требуется распознать тип, то есть переменная islong типа bool должна принимать значение true, если вводимое Т является long и false если иначе. Подскажите, как организовать распознавание? Были разные попытки типа bool islong = (T==long) и тому подобное, но успехом они не увенчались.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2016, 15:07
Ответы с готовыми решениями:

Оператор typename
Здравствуйте. Делал недавно небольшую программку и столкнулся с одной...

Typename и Class
Между записью template &lt;class T&gt; и template &lt;typename T&gt; нет никакой разницы?

Зависимые имена и typename
Не пойму логику зависимых имён. может кто подскажет. вот есть такой пример: ...

Typename перед инстанцированием
В каких случаях перед созданием объекта надо писать typename... И зачем оно там...

Template<typename T> vs auto
template &lt;typename T&gt; vector&lt;T&gt; my_vec1; vector&lt;auto&gt; my_vec2;Какая разница...

2
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
18.05.2016, 15:16 2
Убери третий параметр. Используй typeid(T) == typeid(long).
1
DrOffset
9014 / 4861 / 1196
Регистрация: 30.01.2014
Сообщений: 7,942
18.05.2016, 15:48 3
Цитата Сообщение от Chel_s_gori Посмотреть сообщение
требуется распознать тип, то есть переменная islong типа bool должна принимать значение true, если вводимое Т является long и false если иначе. Подскажите, как организовать распознавание?
C++
1
2
template <typename T, int n, bool islong=std::is_same<T, long>::value>
class CounterA{
http://en.cppreference.com/w/cpp/types/is_same

Добавлено через 5 минут
Если С++11 вдруг недоступен, то можно is_same соорудить самому:
C++
1
2
3
4
5
6
template <typename T1, typename T2>
struct is_same 
{ enum { value = false }; };    
template <typename T1>
struct is_same<T1, T1> 
{ enum { value = true  }; };
Или взять из boost.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2016, 15:48

шаблоны и typename в частности
Здравствуйте! Я разбираюсь с ассоциативными контейнерами в с++ - делаю...

Что означает using typename в шаблоне?
template &lt; typename T &gt; class Class_name { public: using...

В чем отличие typename от class?
Зачем нужно typename В чем отличие от class ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru