C++ 模板中的嵌套类型名
我想写一个这样的函数模板:C++ 模板中的嵌套类型名,c++,templates,C++,Templates,我想写一个这样的函数模板: template< typename L<T> > // does not work void do_sth(L<T>& list){ T value = 0; list.push_back(value); } 这意味着,在模板中,我希望使用提供push_back的容器,但也要使用存储在该容器中的类型 解决办法是 template< typename T > void do_sth(typen
template< typename L<T> > // does not work
void do_sth(L<T>& list){
T value = 0;
list.push_back(value);
}
这意味着,在模板中,我希望使用提供push_back的容器,但也要使用存储在该容器中的类型
解决办法是
template< typename T >
void do_sth(typename std::list<T>& list){
T value = 0;
list.push_back(value);
}
// call
std::list<double> list;
do_sth<double>(list);
这是多余的,因为在声明list时我已经指定了double,而函数b不能与std::vector一起工作,尽管实现非常适合
有人知道如何做到这一点吗?这就是STL容器提供值\u type typedef的原因之一:
您的变通方法还可以简单地调用do_sthlist;由于模板参数推导。您可以这样做:
template< typename T >
void do_sth( T & list){
typename T::value_type value = 0;
list.push_back(value);
}
你是说像这样的?
template< typename T >
void do_sth( T & list){
typename T::value_type value = 0;
list.push_back(value);
}