template< typename charT >
struct serializer
{
/* ... */
private:
std::basic_string< charT > base64_encode( unsigned charT * bytes, unsigned length );
};我希望私人成员函数采用无符号的任何类型。如果charT是char16_t,char32_t,wchar_t,我希望签名没有签名。我怎么能这么做?
发布于 2014-05-05 08:55:57
最简单的方法是使用std::make_unsigned,它适用于任何整数类型:
template<typename T>
typename std::make_unsigned<T>::type convert(T const& input)
{
return static_cast<typename std::make_unsigned<T>::type>(input);
}在您的类中直接使用它会变得非常糟糕,因此我们将添加一个类型别名:
template< typename charT >
struct serializer
{
typedef typename ::std::make_unsigned<charT>::type ucharT;
/* ... */
private:
std::basic_string< ucharT > base64_encode( ucharT * bytes, unsigned length );
};https://stackoverflow.com/questions/23468474
复制相似问题