オブジェクトのインスタンスを必要とします。decltypeは、私は、標準C++ 11で少し実験して、この問題を思い付いた
C++ 11では、あなたが自動的に関数の戻り値の型を取得するためにauto
とdecltype
を使用することができます、begin()
とend()
機能下記例えば:
#include <vector>
template <typename T>
class Container {
private:
std::vector<T> v;
public:
auto begin() -> decltype(v.begin()) { return v.begin(); };
auto end() -> decltype(v.end()) { return v.end(); };
};
ここに私の問題は、私は私のコーディングスタイルに反している民間vector<T> v
前に公共の宣言を宣言しなければならないということです。の後に私のプライベートメンバーの皆様にを宣誓したいと思っています。 decltype
の式はベクトルメンバ関数begin()
の呼び出しであり、オブジェクトのインスタンスを必要とするため、関数宣言の前にベクトルを宣言する必要があります。
方法はありますか?
が、問題は 'auto'と' decltype'の使用に関するものです。 – Snps