Small String hashing and compare
Since we assume GCC or Clang, we can easily make the code adapt to the target's endianness:

#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    constexpr auto hton(std::uint64_t x){
        return __builtin_bswap64(x);
    }

    constexpr auto hton(std::uint32_t x){
        return __builtin_bswap32(x);
    }
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
    constexpr auto hton(std::uint64_t x){
        return x;
    }

    constexpr auto hton(std::uint32_t x){
        return x;
    }
#else
#error Unsupported byte order
#endif


I've used the conventional "host to net" name for the function, to be clearer.



Some identifiers are misspelt: std::uint32_t, std::uint64_t, std::strncpy, std::strncmp, std::printf.



This function is unnecessary:


template&lt;typename T&gt;
auto sscmp(T a, T b){
    return sshhash_implementation::sscmp(a, b);
}



Much simpler to write

using sshhash_implementation::sscmp;



No need for the immediately-executed lambda in testC():


bool const ok = [=](){
    if (overflow)
        return x == 0 &amp;&amp; y == std::numeric_limits&lt;int&gt;::max();
    else
        return x == y;
}();



That can be written as a simple expression:

bool const ok = overflow
    ? x == 0 &amp;&amp; y == std::numeric_limits&lt;int&gt;::max()
    : x == y;




In mask(), I think the constant 8 was intended to be CHAR_BIT, since it's converting a count of char to number of bits.