Базовый пример boost :: type_erasure не строит

Я тестирую новый boost::type_erasure, К сожалению, взяв код базового примера, как он есть, он не собирается. Чтобы быть более конкретным это пример функция basic2() доставляет неприятности. Я попытался подчеркнуть, кто создает проблемы, и кажется, что эти 2 концепции являются причиной

incrementable<>  // error: no match for ‘operator++’ in ‘++arg’
ostreamable<>   // error: no match for ‘operator<<’ in ‘out << arg

Если я не ошибаюсь, эти 2 понятия уже реализованы в библиотеке; используется с int код должен действительно работать как есть, поэтому я не знаю, как решить эту проблему.

У кого-нибудь из вас была похожая проблема, и если у вас есть идеи, как ее исправить?

я использую gcc 4.4.7-3

Я также попробовал следующий пример

class CTest{
public:
CTest(const CTest& o){}
CTest(){}
};

std::ostream& operator<<(std::ostream& o,const CTest& obj){
return o;
}

void basic2() {
CTest c;
any<
mpl::vector<
copy_constructible<>,
typeid_<>,
ostreamable<>
>
>  x(c);

std::cout << c ;
}

И у меня такая же ошибка. Это на самом деле указывает на этот код в надписи, говоря, что

 error: no match for ‘operator<<’ in ‘out << arg’

Ниже приведена функция, которая не работает. Я не понимаю, зачем это нужно operator<< это уже определено.

    // from operators.hpp from boost type_erasure
/**
* The @ref ostreamable concept allows an @ref any to be
* written to a @c std::ostream.
*/
template<class Os = std::ostream, class T = _self>
struct ostreamable
{
static void apply(Os& out, const T& arg) { out << arg; }
};

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]