const correctness and template arguments
<p>Please see <a href="http://stackoverflow.com/questions/11778490/c-compiler-nuisance">this question</a> if you want a bit of back story.</p>

<p>I want to pass things as immutable data.</p>

<pre><code>template&lt;class T&gt;
class A
{
    public:
        void send(const T&amp; value);
};

A&lt;int&gt; a;
a.send(1);
</code></pre>

<p>So far, so good. I just sent a constant value but when I use a pointer things get tricky.</p>

<pre><code>A&lt;int *&gt; a;
int b = 1;
a.send(&amp;b);
</code></pre>

<p>What I eventually end up with is this:</p>

<pre><code>void send(int *const &amp; value)
</code></pre>

<p>I'm now passing a pointer that cannot be changed as a reference but the content that this pointer points to can be changed. This is correct but I'd like to express that you can't modify the content that this pointer points to. </p>

<p>My intent here is to make the thing immutable but is this even possible?</p>
