gpt4 book ai didi

c++ - 专门用于任何 vector 的模板

转载 作者:太空狗 更新时间:2023-10-29 19:44:29 25 4
gpt4 key购买 nike

我有一个模板方法,它有两个针对 bool 类型的专门版本和 vector<string> .

基本版本:

template <class T> 
const T InternGetValue(const std::string& pfad) const
{
...
}

专用版本:

template <>
const bool InternGetValue(const std::string& pfad) const
{
...
}

template <>
const std::vector<std::string> InternGetValue< std::vector<std::string>>(const std::string& pfad) const
{
...
}

现在我想实现一个接受所有类型的vector<aritmethic_data_type>的特化喜欢vector<double> vector<int>vector<float> .

我可以通过为上述类型编写重载来实现这一点,但我有兴趣通过其他特化来实现我的目标。

这是我目前尝试的方法(导致错误“非法使用显式模板参数”):

template <class T>
const std::vector<T> InternGetValue< std::vector<T>>(const std::string& pfad, typename boost::enable_if<boost::is_arithmetic<T>>::type* dummy = 0) const
{
}

最佳答案

我认为 std::enable_ifstd::is_integral 一起可以解决这个问题:

template<typename T>
std::vector<typename std::enable_if<std::is_integral<T>::value, T>::type>
f(const std::string& d);

如果 std:: 没有它们,那么可以使用 boost::。它有它们。

关于c++ - 专门用于任何 vector 的模板<any_arithmetic_data_type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com