如何从未知类型的变量访问嵌套类型?

时间:2014-05-19 14:54:41

标签: c++ c++11

如何获取未知类型变量类的成员类型?应该是什么,而不是type_of

auto v = get_container();
type_of(v)::value_type x;

出于可维护性的原因,我想使用auto,这样如果get_container的返回类型发生了更改,则不会有任何中断。

2 个答案:

答案 0 :(得分:6)

我的印象是你正在寻找:

decltype(v)::value_type x;

decltype是C ++ 11中非常强大的工具。看看its documentation

答案 1 :(得分:2)

如果您想让代码更易于维护,我不同意使用auto和decltype。如果你想坚持编译时方法绑定并避免由于时间关键的代码部分导致的虚拟方法和接口,我宁愿有一个带有描述性名称的typedef,该容器应该用于什么,并使用它定义的类型。如果稍后进行更改,您只需要更改typedef。

根据我自己的经验,更多' auto'在你的代码中,它得到的可读性越低。