«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Ниже приведены названия вопросов и ответов на английском языке, созданные на основе предоставленного вами содержания статьи: Почему `char` ведет себя иначе, чем целочисленные типы при создании экземпляра шаблона при сравнении `char`, `signed char` и `uns

Ниже приведены названия вопросов и ответов на английском языке, созданные на основе предоставленного вами содержания статьи: Почему `char` ведет себя иначе, чем целочисленные типы при создании экземпляра шаблона при сравнении `char`, `signed char` и `uns

Опубликовано 3 ноября 2024 г.
Просматривать:855

以下是根据您提供的文章内容生成的英文问答类标题:

Why does `char` behave differently from integer types in template instantiation when comparing `char`, `signed char`, and `unsigned char`?

различия в поведении char, signed char и unsigned char

В приведенном ниже коде компиляция проходит успешно, однако поведение типа char отличается от поведения целочисленных типов.

cout ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() 

В результате получаются три шаблона инстанцирования для трех типов: int8, uint8 и char. Почему это происходит?

То же самое неверно для целых чисел: int и uint32 приводят к одному инстанцированию шаблона, а signed int — к другому.

Вероятно, причина в том, что C рассматривает char, signed char и unsigned char как три разных типа. В то время как int совпадает с signed int. Так ли это, или я что-то упускаю?

#include 

using namespace std;

typedef   signed char       int8;
typedef unsigned char      uint8;
typedef   signed short      int16;
typedef unsigned short     uint16;
typedef   signed int        int32;
typedef unsigned int       uint32;
typedef   signed long long  int64;
typedef unsigned long long uint64;

struct TrueType {};
struct FalseType {};

template 
struct isX
{
   typedef typename T::ikIsX ikIsX;
};


// Это  int==int32 неоднозначно
//template  bool getIsTrue();
template ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() 

Я использую g 4.something

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3