Работаю в Windows с VS2005 и пытаюсь понять сообщения об ошибках, которые я получаю.Если этот вопрос уже задавался, извините.Я не смог его найти.
Класс, который я тестирую:
#include <functional>
using std::unary_function;
template<typename F, typename G>
struct UnaryConvolution : unary_function<typename G::argument_type,typename F::result_type>{
UnaryConvolution(const F &_f, const G &_g) : m_F(_f), m_G(_g){}
result_type operator()(const argument_type &_arg){
return m_F( m_G( _arg ) );
}
F m_F;
G m_G;
};
Написанный мной модульный тест:
using std::bind2nd;
using std::equal_to;
using std::less;
bool unaryConvolution_test(){
UnaryConvolution obj(bind2nd( equal_to<bool>(), true ), bind2nd( less<int>(), 5 ));
return obj( 3 );
}
и ошибки, которые я получаю:
- ошибка C2955: «UnaryConvolution»: использование шаблона класса требует списка аргументов шаблона
- ошибка C3848: выражение, имеющее тип «UnaryConvolution», потеряло бы некоторые const-volatile квалификаторы для того, чтобывызов '_Result UnaryConvolution :: operator () (const _Arg &)'
- ошибка C2514: 'UnaryConvolution': у класса нет конструкторов
, даже с добавлением строки int val = 3
и затемпрохождение val
не имеет никакого эффекта.(Кстати, в проекте запрещено использовать Boost или любую стороннюю библиотеку. Не спрашивайте, я стараюсь этого не делать).