Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 16:23   #1
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию Проверка типа при компиляции

Доброго времени суток!
Передо мной стояла задача – удачно завершить компиляцию, если в параметр шаблона передан целый беззнаковый тип. Сделал примерно так:
Код:
template <typename T>
   class Unsigned_integer
   {
      static const T val_for_assert = ~static_cast<T>(0);
      static_assert(val_for_assert > 0, "Unsigned_integer::illegal signed type");
   };

template <typename Type>
   class Q : Unsigned_integer<Type>
   {
   }
Интересно, а это не шаманство? Может в std что-то есть на такие случаи?
220Volt вне форума Ответить с цитированием
Старый 10.03.2013, 19:10   #2
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Сам спросил, сам отвечу. "Правильное" решение моей задачи:
Код:
#include <type_traits>
template <typename T>
	class Q
	{
		static_assert(! is_floating_point<T>::value, "illegal type");	// Не скомпилится с "плавающими" типами.
		static_assert(is_unsigned<T>::value, "illegal type");			// Не скомпилится с signed.
	};
Вообще много интересных вариантов: http://en.cppreference.com/w/cpp/header/type_traits
220Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматический уникальный ID типа времени компиляции _Bers Общие вопросы C/C++ 9 18.06.2012 15:10
Проверка в строки на число типа int Assemblerru Общие вопросы C/C++ 5 01.06.2011 13:32
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11
Проверка на элемент какого типа нажали мышью Casper-SC Общие вопросы .NET 1 07.01.2010 21:03
Проверка типа вводимых данных ROD Общие вопросы C/C++ 3 19.09.2009 20:22