サーチ…
前書き
キーワード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