#include <iostream>
using namespace std;
template <int one, int two, int three>
struct vector_c{
enum{
v1 = one,
v2 = two,
v3 = three,
sum = one+two+three
};
template <typename vector>
struct sumVector{
typedef vector_c<
one+vector::v1,
two+vector::v2,
three+vector::v3
> type;
};
template <typename anotherVector>
struct multiplyByVector{
typedef vector_c<
one*anotherVector::v1,
two*anotherVector::v2,
three*anotherVector::v3
> type;
};
};
int main() {
int a = vector_c<1,2,3>::sumVector<vector_c<3,2,1> >::type::sum;
vector_c<3,2,1>::multiplyByVector<vector_c<2,3,1> >::type::sum ;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGludCBvbmUsIGludCB0d28sIGludCB0aHJlZT4Kc3RydWN0IHZlY3Rvcl9jewoJZW51bXsKCXYxID0gb25lLAoJdjIgPSB0d28sCgl2MyA9IHRocmVlLAoJc3VtID0gb25lK3R3byt0aHJlZQoJfTsKCQoJdGVtcGxhdGUgPHR5cGVuYW1lIHZlY3Rvcj4KCXN0cnVjdCBzdW1WZWN0b3J7CgkJdHlwZWRlZiB2ZWN0b3JfYzwKCQkJb25lK3ZlY3Rvcjo6djEsCgkJCXR3byt2ZWN0b3I6OnYyLAoJCQl0aHJlZSt2ZWN0b3I6OnYzCgkJPiB0eXBlOwoJfTsKCQoJdGVtcGxhdGUgPHR5cGVuYW1lIGFub3RoZXJWZWN0b3I+CglzdHJ1Y3QgbXVsdGlwbHlCeVZlY3RvcnsKCQl0eXBlZGVmIHZlY3Rvcl9jPAoJCQlvbmUqYW5vdGhlclZlY3Rvcjo6djEsCgkJCXR3byphbm90aGVyVmVjdG9yOjp2MiwKCQkJdGhyZWUqYW5vdGhlclZlY3Rvcjo6djMKCQk+IHR5cGU7Cgl9Owp9OwoKCmludCBtYWluKCkgewoJaW50IGEgPSB2ZWN0b3JfYzwxLDIsMz46OnN1bVZlY3Rvcjx2ZWN0b3JfYzwzLDIsMT4gPjo6dHlwZTo6c3VtOwoJCgl2ZWN0b3JfYzwzLDIsMT46Om11bHRpcGx5QnlWZWN0b3I8dmVjdG9yX2M8MiwzLDE+ID46OnR5cGU6OnN1bSA7CgkKCXJldHVybiAwOwp9