Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 is_scalar 템플릿

<시간/>

이 기사에서는 C++ STL에서 std::is_scalar 템플릿의 작동, 구문 및 예제에 대해 논의할 것입니다.

is_scalar는 헤더 파일 아래에 있는 템플릿입니다. 이 템플릿은 주어진 유형 T가 스칼라 유형인지 여부를 확인하는 데 사용됩니다.

이 템플릿은 is_arithmetic, is_pointer, is_enum, is_member_pointer 또는 is_same의 조합이며 둘 중 하나가 참이면 is_scalar의 결과도 참인지 여부를 확인합니다.

C++에서 스칼라 유형이란 무엇입니까?

스칼라 유형은 클래스 유형도 배열 유형도 아닌 객체입니다. 스칼라 유형은 오버로딩 없이 더하기 연산자에 대한 기능이 내장된 유형입니다.

구문

template <class T> is_scalar;

매개변수

템플릿은 T 유형의 매개변수만 가질 수 있으며 주어진 유형이 스칼라 유형인지 확인합니다.

반환 값

Boolean 값을 반환하고, 주어진 유형이 스칼라 유형이면 true, 주어진 유형이 스칼라 유형이 아니면 false를 반환합니다.

예시

Input: is_scalar<int>::value;
Output: True

Input: is_scalar<A>::value; //assuming A is an object of a class.
Output: False

예시

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   class TP {
   };
   cout << boolalpha;
   cout << "checking for is_scalar: ";
   cout << "\nint(TP::*): "<< is_scalar<int(TP::*)>::value;
   cout << "\nint *: "<< is_scalar<int*>::value;
   cout << "\nbool: "<< is_scalar<bool>::value;
   cout << "\nint(int): "<< is_scalar<int(int)>::value;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

checking for is_scalar:
int(TP::*): true
int *: true
bool: true
int(int): false

예시

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   class TP {
   };
   enum class TP_1 {
      var_1,
      var_2,
      var_3,
      var4
   };
   cout << boolalpha;
   cout << "checking for is_scalar: ";
   cout << "\nTP : "<< is_scalar<int(TP)>::value;
   cout << "\nTP_1: "<< is_scalar<TP_1>::value;
   cout << "\nint[10] "<< is_scalar<int[10]>::value;
   cout << "\nint&: "<< is_scalar<int&>::value;
   cout << "\nchar&: "<< is_scalar<char&>::value;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

checking for is_scalar:
TP : false
TP_1: true
int[10] false
int&: false
char&: false