Russian Qt Forum
Ноябрь 24, 2024, 02:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: howto disable "enumeral mismatch in conditional expression"?  (Прочитано 6810 раз)
Eugene Efremov
Гость
« : Апрель 23, 2008, 22:20 »

Дано:
Код:
struct false_t
{
enum { res = false };
};

struct true_t
{
enum { res = true };
};

template<int i>
struct check_t
{
enum
{
res = (i!=0) ? true_t::res : false_t::res
};
};

Результат:
warning: enumeral mismatch in conditional expression: `true_t::<anonymous enum>' vs `false_t::<anonymous enum>'

Существует в природе способ отключить оный warning, не трогая все остальные? На опцию -fcond-mismatch оно говорит no longer supported...

P.S. mingw, gcc 3.4.5.
Записан
Eugene Efremov
Гость
« Ответ #1 : Апрель 23, 2008, 22:33 »

Вот, нашел (конкретное извращение, однако):
Код:
		res = (i!=0) ? static_cast<int>(true_t::res) : static_cast<int>(false_t::res)

Хорошо, что это редко бывает нужно...
Записан
Tonal
Гость
« Ответ #2 : Апрель 24, 2008, 07:14 »

Может так:
Код:
struct false_t {
  static const bool res = false;
};

struct true_t {
  static const bool res = true;
};

template<int i>
struct check_t {
  static const bool res = i != 0;
};
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.