error:ptr_fun(<unknown type>)
От: Аноним  
Дата: 03.10.05 17:32
Оценка:
inline bool is_num(const string & s)
{
  return   find_if(
      s.begin(),
      s.end(),
      not1(ptr_fun(isdigit))
   )  == s.end();
}


Ошибка такая:
[code]
In function `bool is_num(const std::string&)':
error: no matching function for call to `ptr_fun(<unknown type>)`

Как можно исправить?
Re: error:ptr_fun(<unknown type>)
От: Анатолий Широков СССР  
Дата: 03.10.05 18:39
Оценка:
#include <functional>
#include <algorithm>
#include <cctype>

inline bool is_num(std::string const &s)
{
  return  std::find_if(
      s.begin(),
      s.end(),
      std::not1(std::ptr_fun(std::isdigit))
   )  == s.end();
}

int main()
{
     return is_num("121212");
}


VC 7.1: без ошибок
Re[2]: error:ptr_fun(<unknown type>)
От: Аноним  
Дата: 03.10.05 19:31
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

Спасибо за ответ

АШ>VC 7.1: без ошибок

Ваш вариант в gcc тоже работает. Но мне нужно юзать <iostream>

А так что скажет VC:
#include <functional>
#include <algorithm>
#include <string>
#include <cctype>
#include <iostream>

using namespace std;
inline bool is_num(std::string const &s)
{
   return  find_if(
        s.begin(),
        s.end(),
        not1(ptr_fun(isdigit))
    )  == s.end();
}

int main(){
   return is_num("121212");
}
Re[3]: error:ptr_fun(<unknown type>)
От: Анатолий Широков СССР  
Дата: 03.10.05 19:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Анатолий Широков, Вы писали:


А>Спасибо за ответ


АШ>>VC 7.1: без ошибок

А>Ваш вариант в gcc тоже работает. Но мне нужно юзать <iostream>

А как это может повлиять на компилируемой предложенного варианта? Разуется, компилируется.
Re[4]: error:ptr_fun(<unknown type>)
От: Аноним  
Дата: 03.10.05 19:41
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:
АШ>А как это может повлиять на компилируемой предложенного варианта? Разуется, компилируется.

А у меня так. Комментирую строку
//#include <iostream>

компилируется.

Разкоментирую
#include <iostream>

ошибка компилятора (gcc version 3.3.5 (Debian 1:3.3.5-13)):
# c++ num.cc
In function `bool is_num(const std::string&)':
error: no matching function for call to `ptr_fun(<unknown type>)'
Re[5]: error:ptr_fun(<unknown type>)
От: Анатолий Широков СССР  
Дата: 03.10.05 19:48
Оценка:
Хорошо, для начала откажемся от using namespace std. Что скажет gcc на это?


#include <functional>
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>


inline bool is_num(std::string const &s)
{
  return  std::find_if(
      s.begin(),
      s.end(),
      std::not1(std::ptr_fun(std::isdigit))
   )  == s.end();
}

int main()
{
     std::cout << is_num("121212");
     return 0;
}
Re[6]: error:ptr_fun(<unknown type>)
От: Аноним  
Дата: 03.10.05 19:57
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Хорошо, для начала откажемся от using namespace std. Что скажет gcc на это?



АШ>
АШ>#include <functional>
АШ>#include <algorithm>
АШ>#include <cctype>
АШ>#include <iostream>
АШ>#include <string>


АШ>inline bool is_num(std::string const &s)
АШ>{
АШ>  return  std::find_if(
АШ>      s.begin(),
АШ>      s.end(),
АШ>      std::not1(std::ptr_fun(std::isdigit))
АШ>   )  == s.end();
АШ>}

АШ>int main()
АШ>{
АШ>     std::cout << is_num("121212");
АШ>     return 0;
АШ>}
АШ>


Скопировал код в num1.cc. Ругается:
$ c++ num1.cc
num1.cc: In function `bool is_num(const std::string&)':
num1.cc:13: error: no matching function for call to `ptr_fun(<unknown type>)'
Re[6]: error:ptr_fun(<unknown type>)
От: Аноним  
Дата: 03.10.05 20:02
Оценка:
В принципе победный код есть, но какой — то он не последовательный:
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <stdio.h>


inline bool is_num(std::string const &s)
{
  return  std::find_if(
        s.begin(),
        s.end(),
        std::not1(std::ptr_fun(isdigit))
  )  == s.end();
}

int main()
{
   std::cout << is_num("121212");
   return 0;
}


Да и хотелось бы понять где в пред/ примере я неправильно использовал stl.
Re: error:ptr_fun(<unknown type>)
От: MaximE Великобритания  
Дата: 04.10.05 06:51
Оценка:
On Mon, 03 Oct 2005 21:32:57 +0400, wrote:

>
> inline bool is_num(const string & s)
> {
>   return   find_if(
>       s.begin(),
>       s.end(),
>       not1(ptr_fun(isdigit))
>    )  == s.end();
> }
>

>
> Ошибка такая:
> [code]
> In function `bool is_num(const std::string&)':
> error: no matching function for call to `ptr_fun(<unknown type>)`
>
> Как можно исправить?

Попробуй добавить амперсанд перед isdigit: &isdigit. И хедер functional...

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[2]: error:ptr_fun(<unknown type>)
От: Аноним  
Дата: 04.10.05 20:23
Оценка:
Вот так сработало:
inline bool is_num(std::string const &s)
{
   return  find_if(
        s.begin(),
        s.end(),
        not1(ptr_fun(::isdigit))
    )  == s.end();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.