То, как я мог бы понять такие вещи, предполагая, что он компилируется и запускается, это использует отладчик или printf, чтобы увидеть, что вы получаете.
На моем xode 3.2.x - не компилируется. На самом деле vec2 myVec2 = vec2(myVec3);
также не компилируется.
Также: в последней строке есть ошибка, которая имеет смысл, когда вы ее читаете.
code.mm: 73: 0 code.mm:73: ошибка: не соответствует функция для вызова
'Vector4<float>::Vector4(vec3&, vec2&, double)
Я всегда находил правила конструктора для C ++ довольно сложными. Пусть компилятор скажет, что это так.