是否可以编写以下代码?我想做的是 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 编译。