Чтение «C++ Templates: The Complete Guide» Раздел 22.5.3Синтаксис вызова функции?
Я запутался в синтаксисе, который автор использует для указателей на функции. Я считаю, что этот синтаксис называется «Function Call Syntax»? Я чувствую, что здесь что-то не хватает ...? Я прокомментировал раздел рассматриваемого кода.
template<typename F>
void my_sort(.., F cmp = F())
{
..
if (cmp(x,y)) {..}
..
}
//*** WHAT IS THIS SYNTAX? ***
bool my_criterion()(T const& x, T const& y);
// call function with function pointer passed as value argument
my_sort(..., my_criterion);
я заменил все .. 's с соответствующими значениями и заменить Т на междунар в my_criterion(), и он по-прежнему не будет компилироваться.
Он первый упоминает этот синтаксис является разделом перед ним:
«Как написано, преимущество этого метода спецификации функтора является то, что можно также передать обычный указатель на функцию в качестве аргумента. Например:
bool my_criterion() (T const& x, T const& y);
код Я пытаюсь собрать на основе отрывка из книги:
template<typename F>
void mySort(F cmp)
{
std::cout << "mySort(F cmp)" << std::endl;
}
bool myCriterion()(int x, int y);
* ошибка C2091: функция возвращает функцию (имеется в виду myCriterion)
Какое сообщение об ошибке? Также, пожалуйста, напишите некоторые * фактические * код. –
ошибка: C2091: функция возврат функция. Я скопировал код из книги дословно. – Integer
Я имею в виду код, который вы на самом деле пытаетесь скомпилировать. –