I’m trying to use boost::iterator_facade with an incomplete Value
template argument. This fails, because iterator_facade is trying to
check if the type is_pod.
Is this the expected behavior? Can I work around this limitation in
some way? I could write a class template that simply proxies foo and
provides implicit conversion to it, but I’d rather have a simpler
solution.
#include <boost/iterator/iterator_facade.hpp>
class iter
: public boost::iterator_facade< iter,
iter,
boost::forward_traversal_tag
>
{
private:
friend class boost::iterator_core_access;
void increment() { }
bool equal(iter const& other) const { return true; }
iter& dereference() const { return const_cast<iter&>(static_cast<const iter&>(*this)); }
};
int main()
{
iter f;
return 0;
}
If is_pod a problem can’t you just specialize it with iter type?
On ideone – http://ideone.com/1DR8v – it seems to be working that way, even if type in not defined at all and is_pod is specialized with that incomplete type.