C++のdecltypeの用途
decltypeはC++で変数や関数の型を式から推論するための型推論メカニズムです。decltypeは変数宣言、関数返り値型、テンプレートパラメータなど、さまざまな場所で使用できます。
decltypeの構文は次のとおりです。
decltype(expression)
expression は、変数、関数呼出し、算術演算、型変換など、有効な C++ 式を何でも指定できます。
decltypeは、式の結果を解析して式の型を推論することで動作します。decltypeは、式自体を実行することなく、式の型に基づいて型を返します。
decltype を用いる一般的な用途を以下に示します。
- 変数宣言:
int x = 10;
decltype(x) y; // 推导出变量y的类型为int
- 返り値の型:
int add(int a, int b) {
return a + b;
}
double sub(double a, double b) {
return a - b;
}
decltype(add) sum; // 推导出sum的类型为int(*)(int, int)
decltype(sub) diff; // 推导出diff的类型为double(*)(double, double)
- ネイティブに日本語で言い換えると:
template <typename T, typename U>
void multiply(T a, U b) {
decltype(a * b) result; // 推导出result的类型为T
// ...
}
int x = 10;
double y = 3.5;
multiply(x, y); // result的类型为int
- 関数の戻り値の型を自動推定
auto add(int a, int b) -> decltype(a + b) {
return a + b;
}
int main() {
int x = 10;
int y = 20;
decltype(add(x, y)) sum = add(x, y); // 推导出sum的类型为int
return 0;
}
総じて、decltypeにより式の型の導出が簡単になり、コードの柔軟性と汎用性を向上できます。