C++中带有示例的std::is_same模板

C++中带有示例的std::is_same模板

C++ STL中的 std::is_same 模板存在于 < type_traits>头文件中。C++ STL的 std::is_same 模板用于检查类型 A 是否与类型 B 相同。如果两者相同,则返回布尔值true,否则返回false。

头文件:

#include <type_traits>

模板类:

template <class A, class B>
struct is_same

template <class A, class B>
inline constexpr 
       bool is_same_v
         = is_same<A, B>::value

语法:

std::is_same<A, B>::value

参数:std::is_same 模板接受以下参数:

  • A: 它代表第一个类型。
  • B: 它代表第二个类型。

返回值: 模板 std::is_same 返回下面的布尔变量:

  • True: 如果类型 A 与类型 B 相同。
  • False: 如果类型 A 与类型 B 不同。

下面是在C++中演示 std::is_same 的程序:

程序:

// C++中演示std::is_same的程序
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
  
// 主函数
int main()
{
  
    cout << boolalpha;
  
    cout << "is int & int32_t相同吗? "
         << is_same<int, int32_t>::value
         << endl;
  
    cout << "is int & int64_t相同吗? "
         << is_same<int, int64_t>::value
         << endl;
  
    cout << "is float & int32_t相同吗? "
         << is_same<float, int32_t>::value
         << endl;
  
    cout << "is int & int相同吗? "
         << is_same<int, int>::value << endl;
    cout << "is int & unsigned int相同吗? "
         << is_same<int, unsigned int>::value
         << endl;
  
    cout << "is int & signed int相同吗? "
         << is_same<int, signed int>::value
         << endl;
  
    return 0;
}
is int & int32_t相同吗? true
is int & int64_t相同吗? false
is float & int32_t相同吗? false
is int & int相同吗? true
is int & unsigned int相同吗? false
is int & signed int相同吗? true

程序2:

//C++示例程序,演示std::is_same的用法
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
  
typedef int integer_type;
  
//声明结构体
struct A {
    int x, y;
};
struct B {
    int x, y;
};
typedef A C;
  
//主函数
int main()
{
  
    cout << boolalpha;
  
    cout << "is_same:" << endl;
    cout << "int, const int is_same: "
         << is_same<int, const int>::value
         << endl;
  
    cout << "int, integer_type is_same: "
         << is_same<int, integer_type>::value
         << endl;
  
    cout << "A, B is_same: "
         << is_same<A, B>::value
         << endl;
  
    cout << "A, C is_same: "
         << is_same<A, C>::value
         << endl;
  
    cout << "signed char, int8_t is_same: "
         << is_same<signed char, int8_t>::value
         << endl;
  
    return 0;
}
is_same:
int, const int is_same: false
int, integer_type is_same: true
A, B is_same: false
A, C is_same: true
signed char, int8_t is_same: true

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程