#include <boost/fusion/adapted/struct/define_struct.hpp>
#include <boost/mpl/contains.hpp>

BOOST_FUSION_DEFINE_STRUCT(
	(your_namespace), foo, 
	(int, a) 
	(char, c))

template<typename source_type, typename search_type>
struct has_type
{
	typedef typename boost::mpl::contains<source_type, search_type>::type value_type;
	static const bool value = value_type::value;
};

#include <iostream>

int main()
{
	bool foo_has_int_pointer = has_type<your_namespace::foo, int*>::value;
	bool foo_has_int = has_type<your_namespace::foo, int>::value;

	std::cout << "foo_has_int_pointer: " << foo_has_int_pointer << "\n";
	std::cout << "foo_has_int: " << foo_has_int << "\n";

	your_namespace::foo my_foo;

	my_foo.a = 10;
	my_foo.c = 'x';

	std::cout << "my_foo: " << my_foo.a << ", " << my_foo.c;
}