The Detail namespace holds types which aren't strictly internal/private, but are nonetheless considered to be "implementation details." Unless specifically documented otherwise, clients are discouraged from using the Detail-namespace API from client code, as any part of it may change significantly or be replaced/removed without any warning. More...
Namespaces | |
namespace | Private |
Classes | |
class | child_pointer_deep_copier |
child_pointer_deep_copier is a functor to deep-copy a list of pointers into another list. More... | |
struct | same_name |
Functor to return true if given NodeT objects match a certain name. More... | |
struct | no_op_phoenix_initializer |
Internal helper class to provide a default no-op initializer for phoenixed objects. More... | |
struct | phoenix |
The phoenix class acts as a wrapper for adding "phoenixing" behaviour to arbitrary shared objects, as covered in detail in Alexandrescu's "Modern C++ Design". More... | |
struct | s11n_api_marshaler |
struct | s11n_api_marshaler< NodeType, SerializableT * > |
A specialization to handle pointer types the same as reference/value types. More... | |
struct | variant |
variant provides a really convenient way to lexically cast strings and other streamable types to/from each other. More... |
The Detail namespace holds types which aren't strictly internal/private, but are nonetheless considered to be "implementation details." Unless specifically documented otherwise, clients are discouraged from using the Detail-namespace API from client code, as any part of it may change significantly or be replaced/removed without any warning.
Clients wishing to use Detail-namespace code are instead encouraged to make their own copy, rename the namespace, and tweak to suit.
The main difference between the Private and Detail namespaces is... well, vague. As a "general guideline", most Private code is specific to one certain area of this library, where as Detail code might have utility in throughout the library, or even play a fundamental role in the implementation. An example of a Detail is the phoenix<> class: it plays no direct part in serialization proper, and thus was moved out of the top-level s11n namespace, but is used throughout the framework to provide shared object instances for many purposes.