Является ли "std:: is_callable" заменено на "std:: is_invocable" в С++ 17?

cppref удалил страницу входа для std::is_callable и вместо нее используйте страницу ввода std::is_invocable.

Однако std::is_callable все еще доступен в Visual Studio 2017.

Является std::is_callable формально [ заменен | устаревшим | удаленным] с std::is_invocable в С++ 17?

Ответ 1

Да, is_callable был переименован в is_invocable, как описано в p0604r0. В документе содержится обоснование этого решения:

Переименовать is_callable в is_invocable: is_callable будет самым естественным именем для характеристики, которая ответит на вопрос, будет ли выражение вызова функции действительным или нет, что является строгим подмножество выражений, INVOKE поддерживает, кроме того, измененное имя is_invocable намного яснее выражает его значение. Освобождение имени is_callable позволяет нам в будущем, возможно, ввести чистый признак is_callable.