Как я могу специализировать шаблонную функцию-член для std::vector

Мне нужно определить метод get двумя разными способами. Один для простых типов T. И один для std::vector.

template<typename T>
const T& Parameters::get(const std::string& key)
{
    Map::iterator i = params_.find(key);
    ...
    return boost::lexical_cast<T>(boost::get<std::string>(i->second));
    ...
}

Как я могу специализировать этот метод для std::vector. Так как там код должен выглядеть примерно так:

template<typename T>
const T& Parameters::get(const std::string& key)
{
    Map::iterator i = params_.find(key);
    std::vector<std::string> temp = boost::get<std::vector<std::string> >(i->second)
    std::vector<T> ret(temp.size());
    for(int i=0; i<temp.size(); i++){
         ret[i]=boost::lexical_cast<T>(temp[i]);
    }
    return ret;    
}

Но я не знаю, как специализировать функцию для этого. Спасибо большое.

24
задан andand 29 November 2011 в 17:15
поделиться