(<*>).(<*>)
вот так нормально:
ExampleType example_type = constructor<
ExampleType,
string,
string,
bool,
int,
ExampleTypeAddress,
vector<ExampleTypePhoneNumber>
>("foo", "bar", false, 22, x, y);
а так нет (единица снова получается):
ExampleType example_type = curry<
ExampleType, string, string, bool, int, ExampleTypeAddress, vector<ExampleTypePhoneNumber>
>(constructor<
ExampleType, string, string, bool, int, ExampleTypeAddress, vector<ExampleTypePhoneNumber>
>)("foo")("bar")(false)(22)(x)(y);
хэлпер curry тут что-то делает не то...