ts: CV_ENUM fix static initialization order fiasco
authorAlexander Alekhin <alexander.alekhin@intel.com>
Fri, 25 Nov 2016 11:56:00 +0000 (14:56 +0300)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Sat, 26 Nov 2016 00:05:32 +0000 (03:05 +0300)
modules/ts/include/opencv2/ts/ts_perf.hpp

index 5b15a9e..bfa1811 100644 (file)
@@ -95,11 +95,11 @@ private:
 
 #define CV_ENUM(class_name, ...)                                                        \
     namespace {                                                                         \
+    using namespace cv;using namespace cv::cuda; using namespace cv::ocl;               \
     struct class_name {                                                                 \
         class_name(int val = 0) : val_(val) {}                                          \
         operator int() const { return val_; }                                           \
         void PrintTo(std::ostream* os) const {                                          \
-            using namespace cv;using namespace cv::cuda; using namespace cv::ocl;        \
             const int vals[] = { __VA_ARGS__ };                                         \
             const char* svals = #__VA_ARGS__;                                           \
             for(int i = 0, pos = 0; i < (int)(sizeof(vals)/sizeof(int)); ++i) {         \
@@ -115,8 +115,7 @@ private:
             *os << "UNKNOWN";                                                           \
         }                                                                               \
         static ::testing::internal::ParamGenerator<class_name> all() {                  \
-            using namespace cv;using namespace cv::cuda; using namespace cv::ocl;        \
-            static class_name vals[] = { __VA_ARGS__ };                                 \
+            const class_name vals[] = { __VA_ARGS__ };                                  \
             return ::testing::ValuesIn(vals);                                           \
         }                                                                               \
     private: int val_;                                                                  \