Re: Условный оператор, чай баг - мой или gcc ?
От: Кодт Россия  
Дата: 28.05.13 19:36
Оценка:
Здравствуйте, ScorpZ, Вы писали:

Минимальный пример:
#include <cassert>
#include <functional>

typedef void FUN(int);
typedef FUN* FUNPTR;
typedef std::function<FUN> ffPtrT;

int main()
{
  assert(!ffPtrT(nullptr));
  assert(!ffPtrT((FUNPTR)nullptr)); // assertion failed
}

Поскольку в тернарном операторе (cond ? &f1 : nullptr) универсальный std::nullptr_t конкретизируется до типизированного FUNPTR, — получаем то, что получаем.

Вместо ffPtrT(nullptr) в ветке тернарного оператора можно написать просто ffPtrT().
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.