"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Los siguientes son títulos de preguntas y respuestas en inglés generados en función del contenido del artículo que proporcionó: ¿Por qué "char" se comporta de manera diferente a los tipos de enteros en la creación de instancias de plantilla cua

Los siguientes son títulos de preguntas y respuestas en inglés generados en función del contenido del artículo que proporcionó: ¿Por qué "char" se comporta de manera diferente a los tipos de enteros en la creación de instancias de plantilla cua

Publicado el 2024-11-03
Navegar:187

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

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

diferencias en el comportamiento entre char, char firmado y char sin firmar

El siguiente código se compila correctamente, pero char se comporta de manera diferente que los tipos enteros.

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

El resultado son tres patrones de creación de instancias para tres tipos: int8, uint8 y char. ¿Por qué sucede esto?

No ocurre lo mismo con los números enteros: int y uint32 dan como resultado una instanciación de patrón, y int con signo da como resultado otra.

La razón probablemente sea porque C trata char , char firmado y char sin firmar como tres tipos diferentes. Mientras que int es lo mismo que int con signo. ¿Es esto cierto o me falta algo?

#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  >() 

Yo uso g 4.algo

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3