Interfaces beschreiben Fähigkeiten, die ein Datentypen besitzen muss.
Nimmt man einen Container, so kann man Ansprüche oder Prioritäten an den Container stellen, die er erfüllen muss. Beispielsweise Indexable, Iterable, PriorityRead, Insertable, NonRelocatable. Datentypen können Addierbar (Pointer), Selbst-Multiplizierbar (ergibt bei Pointern keinen Sinn), Integer-Multiplizierbar sein. Sie könnten Integer und/oder Nativ sein. Der Compiler kann dann anhand der Liste gewünschter Eigenschaften entscheiden, ob es einen passenden Datentyp gibt über eine Factory-Funktion.
using MyContainer_t = Container( Container::Iterable | Container::Insertable | Container::PriorityBalanced | NonRelocatable );