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