C++ std::is_same例

1409 ワード

std::is_same、integralから継承constantは、TとUが同じタイプかどうかを判断するために使用され、戻り値(::value)はtrue/falseです.
template  struct is_same;

classクラス名が異なる場合、TがUにtypedefが関連付けられている場合にのみ、TがUのすべてのメンバー属性と完全に一致していても、異なるタイプとみなされることに注意してください.具体例は次のとおりです.
// is_same example
#include 
#include 
#include 

typedef int integer_type;
struct A { int x,y; };
struct B { int x,y; };
typedef A C;

int main() {
  std::cout << std::boolalpha; // bool    true false。
  std::cout << "is_same:" << std::endl;
  std::cout << "int, const int: " << std::is_same::value << std::endl;
  std::cout << "int, integer_type: " << std::is_same::value << std::endl;
  std::cout << "A, B: " << std::is_same::value << std::endl;
std::cout << "A, C: " << std::is_same::value << std::endl;
std::cout << "signed char, std::int8_t: " << std::is_same::value << std::endl;
return 0;
}

出力:
is_same:
int, const int: false
int, integer_type: true
A, B: false
A, C: true
signed char, std::int8_t: true