【发布时间】:2012-10-11 10:42:48
【问题描述】:
我想在代码块中选择数据类型时更加迂腐,我需要在一般的 size_typesize_t 或容器类型的 container::size_type 之间进行选择。我的问题是,如果我有以下代码块,我不知道该怎么做。有人可以帮忙吗?
template<typename some_container>
int func(some_container& input)
{
//Some code...
//...
decltype(input.size()) variable_x; //Choose this if defined,
size_t variable_x; //otherwise choose this
//... Some more code...
}
在这种情况下,some_container 可能是一个自定义容器,并且不提供size() 功能。导致我产生这种想法的原因是在size_t vs container::size_type 上阅读size_t 和container::size_type 之间的区别。我也读过Determine if a type is an STL container at compile time,但这种方法对我的情况来说有点过分。
【问题讨论】:
-
您在问题中有
size_type和size_t错误的方式。 ITYM“一般size_t或container::size_type用于容器类型”。 -
auto在这里派上用场:auto size = input.size()。
标签: c++ c++11 visual-studio-2012 typetraits size-type