Your method plus expects the parameter to have the same generic type parameter T as the receiver. Hence, you can't add a Foo to a Foo.
If you want to be able to add all types of Foo, than you need to declare your extension function like so:
operator fun Foo.plus(that: Foo): Foo = throw Exception()