Подтвердить что ты не робот

В чем разница между концепцией Callable и чертами std:: is_function?

С++ 17 будет иметь концепцию Callable, и мне было интересно, какая именно разница с типами, для которых std::is_function<T>::value - true. Они эквивалентны? Является ли это надмножеством другого?

4b9b3361

Ответ 1

С++ 17 будет иметь концепцию Callable

Это там в стандарте, так как С++ 11.

Являются ли они эквивалентными? Является ли это надмножеством другого?

Нет, на самом деле они совершенно не пересекаются. Callable применяется только к типам объектов и включает в себя все: от указателя к элементам до типов с перегруженным operator() типами с неявным преобразованием в указатели на функции непосредственно для указателей функций.

is_function является истинным только для реальных типов функций, которые по определению не являются типами объектов.