C++: Vector3 type "wall"?
<p>Say I have:</p>

<pre><code>class Vector3 {
  float x, y, z;
  ... bunch of cuntions ..
  static operator+(const Vector3&amp;, const Vector3);
};
</code></pre>

<p>Now, suppose I want to have classes:</p>

<pre><code>Position, Velocity, 
</code></pre>

<p>that are exactly like Vector3 (basically, I want </p>

<pre><code>typedef Vector3 Position;
typedef Vector3 Velocity;
</code></pre>

<p>Except, given:</p>

<pre><code>Position position;
Vector3 vector3;
Velocity velocity;
</code></pre>

<p>I want to make sure the following <em>can't</em> happen:</p>

<pre><code>position + vector3;
vector3 + velocity;
velocity + position;
</code></pre>

<p>What is the best way to achieve this?</p>
