Форум программистов, компьютерный форум CyberForum.ru

Как ограничить параметр типа шаблона только числовыми типами данных? - C++

Восстановить пароль Регистрация
 
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
02.08.2013, 12:41     Как ограничить параметр типа шаблона только числовыми типами данных? #1
Собствено, сабж.
Ключевое для поиска слово хотябы.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 12:41     Как ограничить параметр типа шаблона только числовыми типами данных?
Посмотрите здесь:

Передать шаблонный класс, как параметр шаблона C++
Как ограничить доступ к внешним устройствам и не только C++
Как ограничить тип данных шаблона класса? C++
Зачем нужен шаблон как параметр шаблона? C++
Считывание типа данных для шаблона C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.08.2013, 12:42     Как ограничить параметр типа шаблона только числовыми типами данных? #2
А зачем что-то кому-то ограничивать?
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
02.08.2013, 12:45  [ТС]     Как ограничить параметр типа шаблона только числовыми типами данных? #3
Чтобы было понятно, что всякую фигню в этот шаблон запихивать не стоит.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.08.2013, 12:46     Как ограничить параметр типа шаблона только числовыми типами данных? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
loou, SFINAE
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <type_traits>
 
template<typename T>
typename std::enable_if<(std::is_integral<T>::value || std::is_floating_point<T>::value), void>::type
function(const T& value)
{
   std::cout << "Only for integrals and floats" << std::endl;
}
 
template<typename T>
typename std::enable_if<(!std::is_integral<T>::value && !std::is_floating_point<T>::value), void>::type
function(const T& value)
{
   std::cout << "For all others" << std::endl;
}
 
int main()
{
   function(1);
   function(1.0);
   function('c');
   function("hello");
}
http://ideone.com/5XT665

ЗЫ лучше конечно через is_arithmetic, но я про него забыл.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
02.08.2013, 12:46     Как ограничить параметр типа шаблона только числовыми типами данных? #5
http://en.cppreference.com/w/cpp/types/is_arithmetic
и
http://en.cppreference.com/w/cpp/types/enable_if
Yandex
Объявления
02.08.2013, 12:46     Как ограничить параметр типа шаблона только числовыми типами данных?
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru