Hi,
I have code similar to the following snippet:
#include
#include
#include
#include
namespace fusion=boost::fusion;
template<typename T>
class A {
public:
struct B {};
B make_b() const { return B(); }
};
template<typename T>
A<T>
make_a( T const& )
{
return A<T>();
}
struct make_b {
template<typename Sig> struct result;
template <typename DS>
struct result
{
typedef typename DS::B type;
};
template <typename T>
typename T::B
operator()(T const& t) const { return t.make_b(); }
};
int
main()
{
namespace fusion=boost::fusion;
fusion::as_list( fusion::transform(
fusion::make_list( make_a( 1. ), make_a( 1 ) ),
make_b() ) );
return 0;
}
it fails to compile with an error like this:
... rather long context here
..\..\../boost/utility/result_of.hpp:83:1: error:
invalid use of incomplete type ‘struct make_b::result’
test.cpp:27:35: error: declaration of ‘struct make_b::result’
What am I doing wrong?
Any help appreciated,
Gennadiy