The documentation of BOOST_FUSION_DEFINE_STRUCT says it should be used
at global scope.

Why can't this function be used at namespace scope, and, especially, at class
scope? Not being able to use it at namespace scope is just as annoyance
because it means the current namespace(s) have to be closed before the macro
and re-opened after it; but not being able to use it at class scope means
that it cannot be used to declare nested structures which are fusion sequences
at all.

Is there another device that allows us to declare nested structure that are
fusion sequences?