이 기사에서는 C++ STL에서 std::is_scalar 템플릿의 작동, 구문 및 예제에 대해 논의할 것입니다.
is_scalar는
이 템플릿은 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