Исходя из С++, я пытаюсь выполнить метапрограммирование в Swift. Например, я хотел бы реализовать metafunction, который добавляет два числа. Я пробовал что-то вроде этого:
protocol IntWrapper {
class var value: Int { get }
}
struct A: IntWrapper {
static let value = 5
}
struct B: IntWrapper {
static let value = 7
}
struct Sum<T: IntWrapper, U: IntWrapper>: IntWrapper {
static let value = T.value + U.value
}
Это, однако, не работает: Xcode жалуется, что T.Type
не имеет члена value
(или просто падает, иногда.)
Как реализовать такую функциональность?