С++ 17 будет иметь концепцию Callable
, и мне было интересно, какая именно разница с типами, для которых std::is_function<T>::value
- true
. Они эквивалентны? Является ли это надмножеством другого?
В чем разница между концепцией Callable и чертами std:: is_function?
Ответ 1
С++ 17 будет иметь концепцию
Callable
Это там в стандарте, так как С++ 11.
Являются ли они эквивалентными? Является ли это надмножеством другого?
Нет, на самом деле они совершенно не пересекаются. Callable
применяется только к типам объектов и включает в себя все: от указателя к элементам до типов с перегруженным operator()
типами с неявным преобразованием в указатели на функции непосредственно для указателей функций.
is_function
является истинным только для реальных типов функций, которые по определению не являются типами объектов.