Derived Class to keep track of "original strings" in std::regex and ease out their usage while coding
This looks like a bug:

Regex&amp; Regex::Assign( const Regex&amp; rhs )
{
    if ( this != &amp;rhs ) return *this;  // &lt;- ?

    m_str = rhs.m_str;
    m_match_nothing = rhs.m_match_nothing;
    regex::assign( rhs );

    return *this;
}


Presumably you want to abort the assignment early if:

if ( this == &amp;rhs ) return *this;


At the moment, you only update the variables if the rhs is the same as the object receiving the call... which already has those variable values.