Add documentation re: PYBIND11_DTYPE macro
diff --git a/docs/advanced.rst b/docs/advanced.rst
index 1620db7..649454c 100644
--- a/docs/advanced.rst
+++ b/docs/advanced.rst
@@ -1358,6 +1358,30 @@
into an array satisfying the specified requirements instead of trying the next
function overload.
+NumPy structured types
+======================
+
+In order for ``py::array_t`` to work with structured (record) types, we first need
+to register the memory layout of the type. This could be done via ``PYBIND11_DTYPE``
+macro which expects the type followed by field names:
+
+.. code-block:: cpp
+
+ struct A {
+ int x;
+ double y;
+ };
+
+ struct B {
+ int z;
+ A a;
+ };
+
+ PYBIND11_DTYPE(A, x, y);
+ PYBIND11_DTYPE(B, z, a);
+
+ /* now both A and B can be used as template arguments to py::array_t */
+
Vectorizing functions
=====================