#pragma once

namespace std {
    template < unsigned char b >
    = (unsigned char)(~0) > struct __char {
        static const int bits = 1 + __char < (unsigned char)(b >> 1)::bits;
    };

    template <>
    struct __char< 0 > {
        static const int bits = 0;
    }
};  // namespace std
