VC++ compiler upgrade 2010->2015 redefinition; 'constexpr' specifier mismatch
<p>Working on upgrading a VC++ project from the VS2010 compiler to the VS2015 compiler and I've run into this error, any help would be appreciated.</p>

<pre><code>C2475 'std::less&lt;_Kty&gt;::operator ()': redefinition; 'constexpr' specifier mismatch
</code></pre>

<p>This is the code generating the error:</p>

<pre><code>bool std::less &lt; sp &lt; ref::db::string &gt; &gt;::operator()( 
    const sp &lt; ref::db::string &gt;&amp; first, 
    const sp &lt; ref::db::string &gt;&amp; second ) const 
{
    return first-&gt;cpp() &lt; second-&gt;cpp();
}
</code></pre>

<p>Second example error:</p>

<pre><code>'std::less&lt;sp&lt;ref::ifile&gt;&gt;::operator ()': redefinition; 'constexpr' specifier mismatch
</code></pre>

<p>code:</p>

<pre><code>template &lt;&gt;
bool std::less &lt; sp &lt; ref::ifile &gt; &gt;::operator()(
    const sp &lt; ref::ifile &gt;&amp; x, 
    const sp &lt; ref::ifile &gt;&amp; y ) const 
{
    if( std::tolower( x-&gt;name()-&gt;cpp() ) 
        == std::tolower( y-&gt;name()-&gt;cpp() ) )
    {
        return std::tolower( x-&gt;extention()-&gt;cpp() ) 
               &lt; std::tolower( y-&gt;extention()-&gt;cpp() );
    }

    return std::tolower( x-&gt;name()-&gt;cpp() ) &lt; std::tolower( y-&gt;name()-&gt;cpp() );
}
</code></pre>