This proposal is not being actively pursued at the following time by the original authour. Feel free to expand and modify this work as long with proper credit given to the original authour.
interface IFuBar {
void FuBar();
};
SomeInterface i = x;
Interpretation of the above statement:
const SomeInterface i = SomeObject;
Const qualified interface variables behave like const references, only allow const member functions to be called, etc.
template<interface argument_name> // ...
inheritance_list ::= interface_name [, interface_name]*
interface inteface_name : inheritance_list {
// ...
};
Notice that there are no qualifiers allowed before an interface name from the inheritance list.
Interfaces only ever publically inherit from other interfaces. Classes or structs can not inherit
from interfaces.
template<class T : SomeInterface> class SomeClass {
// ...
};
This would mean that T is required to implement SomeInterface implicitly.