我想在代码块中选择数据类型时更加迂腐,我需要在一般类型或容器类型之间进行选择。我的问题是,如果我有以下代码块,我不知道该怎么做。有人可以帮忙吗?size_type
size_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 与 container::size_typesize_t
之间container::size_type
的区别。我还阅读了在编译时确定一个类型是否是 STL 容器,但这种方法对我的情况来说有点笨拙。