diff --git a/src/polymesh/view.hh b/src/polymesh/view.hh
index f0a7065b9bd7f9a06d2ad1ea1469fa633ff31c61..167a15735ecc7345f194fa8253a8218a8c980fa9 100644
--- a/src/polymesh/view.hh
+++ b/src/polymesh/view.hh
@@ -5,6 +5,19 @@
 
 namespace polymesh
 {
+/**
+ * Builds a non-owning view on an attribute
+ * Does preserve references where possible
+ *
+ * Usage:
+ *
+ *   pm::Mesh m;
+ *   auto pos = m.vertices().make_attribute<tg::pos3>();
+ *
+ *   // does NOT allocate memory, is only a view on pos
+ *   auto z_view = pos.view([](tg::pos3& p) -> float& { return p.z; });
+ *   z_view[v] = 8; // writes through to pos
+ */
 template <class CollectionT, class FuncT>
 struct attribute_view
 {