Я думал, что на С++ или Java есть способ сделать что-то вроде этого
Interface IF1{
....
};
Interface IF2{
....
};
function f(Object o : Implements IF1, IF2){
...
}
означает систему типов, которая позволяет требовать реализации интерфейсов.