They are well-known by their fully-qualified name, e.g.
"google.protobuf.DoubleValue". And you can get the fully-qualified names
via C++ reflection.
So you're marshaling logic woudl need to special-case the relevant message
names and subsequently can make assumptions about their structure (since
I'm wondering if protobuf supports a way to determine if a type is a
well-known type via reflection in C++? I'm working on a marshalling layer
for a custom encoding format and I need to unbox well-known types into
their primitive type (e.g., Double to double). I've so far been unable to
find