我想做一个函数指针并在构造函数中初始化它。使函数指针std :: min与std :: initializer_list
如果type_是Min,则找到任何输入的最小值。
如果type_是最大值,找到任何输入的最大值。
我记下了下面的代码,但它不会在VS 2014中编译,C++编译器版本是MSVC 19.0.23506.0。
uint32_t (*compare) (std::initializer_list<const uint32_t> init_list);
if (Min == type_) {
compare = std::min<std::initializer_list<const uint32_t>>;
} else if (Max == type_) {
compare = std::max<std::initializer_list<const uint32_t>>;
}
的错误是如下:
error C2563: mismatch in formal parameter list
error C2568: '=': unable to resolve function overload
note: could be '_Ty std::min(std::initializer_list<_Elem>,_Pr)'
note: or 'const _Ty &std::min(const _Ty &,const _Ty &,_Pr)'
note: or '_Ty std::min(std::initializer_list<_Elem>)'
note: or 'const _Ty &std::min(const _Ty &,const _Ty &)'
这似乎是一个类型不匹配,但我不知道如何解决。
但是,如果您使用现代C++机制有更优雅的解决方案。 高兴看到!
您不需要使用'const'类型,initializer_list是不可变的 –
您可能想在最后的'else'情况下将'compare'初始化为'nullptr'。当我看到像这样的未初始化变量时,至少我会发痒。 – MSalters