Я хочу записать указатель на функцию со ссылочным типом возврата
string & cmp(string &s1, string &s2) {
return s1.size() > s2.size() ? s1 : s2;
}
Функция cmp проста, она просто возвращает более длинную строку.
string string1 = "123";
string string2 = "1234";
string & (*pf)(string &,string &) = cmp;
нормально звонить
string &temp = cmp(string1, string2);
но когда я пытаюсь использовать pf
,
string &temp = pf(string1, string2);
Компилятор показывает ошибку: expression must be lvalue
добавлено: извините, похоже, IDE предоставляет неверную информацию о проверке.
Я использую CLion в качестве IDE. Красное подчеркивание показывает ошибку, но на самом деле я могу скомпилировать его и запустить успешно .... Это странно, кто-нибудь знает, что не так с моей проверкой IDE? Или, может быть, мне нужно опубликовать вопрос в сообществе CLion?