Rvalue copy and and assignment for secure array class
This code does not function.

Let's take a look at your move constructor:    

SecBlock(SecBlock&amp;&amp; t)
{
    std::swap(*this, t);
}


This caused a stack overflow on my system. Why? Imagine if the swap function was implemented like this:

template &lt;typename T&gt;
void swap (T &amp;t1, T &amp;t2)
{
    T temp = std::move (t1) ;
    t1 = std::move (t2) ;
    t2 = std::move (temp) ;
}


In fact, this is how it is implemented by Visual Studio 2012. The first line T temp = std::move (t1) ;, calls your move constructor. This causes you to recursively call your move constructor until your program inevitably crashes.

Another problem is that before the swap, m_size and m_ptr for *this will be uninitialized. So even if you fixed your move constructor, you will be transferring uninitialized data to t. Assuming you're destructor does some clean-up, this could lead to undefined behavior.

All in all, both member-functions are a mess.
Check out the rule of 5 for more help.