Restrict std::initializer_list constructors to arithmetic types.

pull/9507/head
Maarten de Vries 7 years ago
parent 4ee3034496
commit 3571e8f263
  1. 7
      modules/core/include/opencv2/core/mat.hpp
  2. 2
      modules/core/include/opencv2/core/mat.inl.hpp

@ -53,6 +53,10 @@
#include "opencv2/core/bufferpool.hpp"
#ifdef CV_CXX11
#include <type_traits>
#endif
namespace cv
{
@ -988,7 +992,8 @@ public:
#ifdef CV_CXX11
/** @overload
*/
template<typename _Tp> explicit Mat(const std::initializer_list<_Tp> list);
template<typename _Tp, typename = typename std::enable_if<std::is_arithmetic<_Tp>::value>::type>
explicit Mat(const std::initializer_list<_Tp> list);
#endif
#ifdef CV_CXX_STD_ARRAY

@ -575,7 +575,7 @@ Mat::Mat(const std::vector<_Tp>& vec, bool copyData)
}
#ifdef CV_CXX11
template<typename _Tp> inline
template<typename _Tp, typename> inline
Mat::Mat(const std::initializer_list<_Tp> list)
: flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG), dims(2), rows((int)list.size()),
cols(1), data(0), datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0)

Loading…
Cancel
Save