サーチ…


前書き

キーワードdecltypeを使用すると、変数、関数、または式の型を取得できます。

基本的な例

この例では、このキーワードの使用方法を示しています。

int a = 10;

// Assume that type of variable 'a' is not known here, or it may
// be changed by programmer (from int to long long, for example).
// Hence we declare another variable, 'b' of the same type using 
// decltype keyword.
decltype(a) b; // 'decltype(a)' evaluates to 'int'

たとえば、誰かが変更された場合は、「a」と入力して:

float a=99.0f;

すると変数bの型が自動的にfloatなりfloat

もう一つの例

我々はベクトルを持っているとしましょう:

std::vector<int> intVector;

そして、このベクトルのイテレータを宣言したいと思います。明らかな考え方は、 autoを使うことです。しかし、イテレータ変数を宣言するだけで、何かに代入する必要はありません。私たちはやります:

vector<int>::iterator iter;

しかし、 decltypeでは、( intVector型が変更された場合に)簡単になり、エラーが発生しにくくなります。

decltype(intVector)::iterator iter;

あるいは:

decltype(intVector.begin()) iter;

2番目の例では、 beginの戻り型を使用して実際の型を判定しvector<int>::iterator 。これはvector<int>::iteratorです。

我々はconst_iteratorのが必要な場合は、我々だけで使用する必要がありますcbegin

decltype(intVector.cbegin()) iter; // vector<int>::const_iterator


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow