我遇到一些valarray函数指针代码有问题:
double (*fp)(double) = sin;
valarray<double> (*fp)(const valarray<double> &) = sin;
Run Code Online (Sandbox Code Playgroud)
第一次编译,第二次编译:
error: no matches converting function 'sin' to type 'class std::valarray<double> (*)(const class std::valarray<double>&)'
Run Code Online (Sandbox Code Playgroud) 有没有办法从类型的变量中获取value_typestd::map<K,V>
例如:
class Foo{
private:
std::map<int,double> myMap;
public:
void Bar(const std::map<int,double>& m)
{
using PairType = m::value_type; //How to enable something like this?
std::vector<PairType> vec(m.size());
read_ints_and_doubles(&vec, m.size()); //expects a void* (legacy lib I'm using)
}
};
Run Code Online (Sandbox Code Playgroud)
显然我知道我可以使用std::map<int,double>::value_type,但我希望这对未来的变化是开放的.
我想到使用using MyMapType = std::map<int,double>然后只是MyMapType在任何地方使用,但我不想这样做,在我看来,有一种方法可以从变量本身获取此信息,因为这是所有静态信息,我看不到为什么我无法访问此信息.
编辑: 这个问题与建议的dup有很大不同:声明依赖于模板函数中未知类型的变量,因为我没有尝试声明任何变量,并且类型是已知的.