次のコードを書くことは可能でしょうか? 私がやりたいことは、do_vector_action が関数の正しい戻り値の型を自動的に推測できるようにすることです (私が実際に持っているコードには、ここのヘッダーではなく、cpp ファイルで関数が定義されています)。
class some_class
{
public:
std::vector<int> int_vector;
auto do_vector_action() -> decltype(int_vector_.size())
{
decltype(int_vector.size()) something + 1;
return something;
}
}
さらに、次のようなtypedefを置き換えることは可能でしょうか?
class some_class
{
public:
typedef std::vector<int> int_vector_type;
int_vector_type int_vector;
int_vector_type::size_type size;
}
decltype または次のような他の構成を使用して
class some_class
{
public:
std::vector<int> int_vector;
decltype(int_vector)::size_type size;
}
decltype を使用した最後のスニペットは、Visual Studio 2012 RC でコンパイルされないためです。