A data structure is intrusive if it requires help from the stored elements to function.

For example, a non-intrusive linked-list:

template <typename T>
struct Node {
  T value;
  Node* next = nullptr;
  Node* previous = nullptr;
};
 
template <typename T>
struct List {
  Node* head;
  Node* tail;
};
 
List<int> list;

And below is an intrusive list:

struct IntNode {
  IntNode value;
  IntNode* next = nullptr;
  IntNode* previous = nullptr;
};
 
template <typename Node>
struct List {
  Node* head;
  Node* tail;
};
 
List<IntNode> list;

Reference