C++のis_scalarテンプレート
この記事では、C++STLでのstd::is_scalarテンプレートの動作、構文、および例について説明します。
is_scalarは、
このテンプレートは、is_arithmetic、is_pointer、is_enum、is_member_pointer、またはis_sameの組み合わせであり、いずれかがtrueの場合、is_scalarの結果もtrueになるかどうかを確認します。
C ++のスカラー型とは何ですか?
スカラー型は、クラス型でも配列型でもないオブジェクトです。スカラー型は、オーバーロードなしで加算演算子の機能が組み込まれている型です。
構文
template <class T> is_scalar;
パラメータ
テンプレートはタイプTのパラメーターのみを持つことができ、指定されたタイプがスカラータイプであるかどうかを確認します。
戻り値
ブール値を返します。指定された型がスカラー型の場合は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
-
C++でのテンプレートの特殊化
C ++では、テンプレートを使用して一般化された関数とクラスを作成します。したがって、int、char、floatなどの任意のタイプのデータ、またはテンプレートを使用するユーザー定義データを使用できます。 このセクションでは、テンプレートの特殊化の使用方法を説明します。これで、さまざまなタイプのデータ用に一般化されたテンプレートを定義できます。そして、特別なタイプのデータのためのいくつかの特別なテンプレート関数。より良いアイデアを得るためにいくつかの例を見てみましょう。 サンプルコード #include<iostream> using namespace std; templat
-
C++での型推論
型推論または推論とは、プログラミング言語での式のデータ型の自動検出を指します。これは、いくつかの強く静的に型付けされた言語に存在する機能です。 C ++では、autoキーワード(C ++ 11で追加)が自動型推定に使用されます。たとえば、ベクトルを反復処理するイテレータを作成する場合、その目的でautoを使用するだけです。 例 #include<iostream> #include<vector> using namespace std; int main() { vector<int> arr(10);