Exclude some things from generated documentation.
diff --git a/asio/include/asio/impl/spawn.hpp b/asio/include/asio/impl/spawn.hpp
index c6e9b23..02e3d89 100644
--- a/asio/include/asio/impl/spawn.hpp
+++ b/asio/include/asio/impl/spawn.hpp
@@ -128,6 +128,8 @@
 
 } // namespace detail
 
+#if !defined(GENERATING_DOCUMENTATION)
+
 template <typename Handler, typename ReturnType>
 struct handler_type<basic_yield_context<Handler>, ReturnType()>
 {
@@ -310,6 +312,8 @@
       ASIO_MOVE_CAST(Function)(function), attributes);
 }
 
+#endif // !defined(GENERATING_DOCUMENTATION)
+
 } // namespace asio
 
 #include "asio/detail/pop_options.hpp"
diff --git a/asio/include/asio/impl/use_future.hpp b/asio/include/asio/impl/use_future.hpp
index f921263..fd5ce1b 100644
--- a/asio/include/asio/impl/use_future.hpp
+++ b/asio/include/asio/impl/use_future.hpp
@@ -109,6 +109,8 @@
 
 } // namespace detail
 
+#if !defined(GENERATING_DOCUMENTATION)
+
 // Handler traits specialisation for promise_handler.
 template <typename T>
 class async_result<detail::promise_handler<T> >
@@ -161,6 +163,8 @@
   typedef detail::promise_handler<Arg2> type;
 };
 
+#endif // !defined(GENERATING_DOCUMENTATION)
+
 } // namespace asio
 
 #include "asio/detail/pop_options.hpp"
diff --git a/asio/include/asio/spawn.hpp b/asio/include/asio/spawn.hpp
index d05ab42..3c1f3f7 100644
--- a/asio/include/asio/spawn.hpp
+++ b/asio/include/asio/spawn.hpp
@@ -47,16 +47,22 @@
     return tmp;
   }
 
-//private:
+#if defined(GENERATING_DOCUMENTATION)
+private:
+#endif // defined(GENERATING_DOCUMENTATION)
   detail::weak_ptr<boost::coroutines::coroutine<void()> > coro_;
   boost::coroutines::coroutine<void()>::caller_type& ca_;
   Handler& handler_;
   asio::error_code* ec_;
 };
 
+#if defined(GENERATING_DOCUMENTATION)
+typedef basic_yield_context<unspecified> yield_context;
+#else // defined(GENERATING_DOCUMENTATION)
 typedef basic_yield_context<
   detail::wrapped_handler<
     io_service::strand, void(*)()> > yield_context;
+#endif // defined(GENERATING_DOCUMENTATION)
 
 template <typename Handler, typename Function>
 void spawn(ASIO_MOVE_ARG(Handler) handler,