我想做一個函數指針並在構造函數中初始化它。使函數指針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