error: invalid use of 'using ptr = class std::shared_ptr'
Is this a known bug in opencv2?
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release: 14.04 Codename: trusty /usr/local/src/opentrack$ make [ 6%] Built target opentrack-qxt-mini [ 9%] Built target opentrack-pose-widget [ 25%] Built target opentrack-api [ 25%] Built target opentrack-version [ 28%] Built target opentrack-spline-widget [ 28%] Building CXX object CMakeFiles/opentrack.dir/facetracknoir/main.cpp.o In file included from /usr/include/opencv2/core/core.hpp:4854:0, from /usr/local/src/opentrack/opentrack/tracker.h:6, from /usr/local/src/opentrack/facetracknoir/ui.h:52, from /usr/local/src/opentrack/facetracknoir/main.cpp:1: /usr/include/opencv2/core/operations.hpp: In member function 'void cv::Algorithm::set(const char*, const cv::Ptr<_Tp2>&)': /usr/include/opencv2/core/operations.hpp:3978:38: error: invalid use of 'using ptr = class std::shared_ptr<cv::algorithm>' Ptr<algorithm> algo_ptr = value. template ptr<cv::algorithm>(); ^ /usr/include/opencv2/core/operations.hpp: In member function 'void cv::Algorithm::setAlgorithm(const char*, const cv::Ptr<_Tp2>&)': /usr/include/opencv2/core/operations.hpp:3994:38: error: invalid use of 'using ptr = class std::shared_ptr<cv::algorithm>' Ptr<algorithm> algo_ptr = value. template ptr<cv::algorithm>(); ^ make[2]: *** [CMakeFiles/opentrack.dir/facetracknoir/main.cpp.o] Error 1 make[1]: *** [CMakeFiles/opentrack.dir/all] Error 2 make: *** [all] Error 2
You mean you are building some code of yours on Ubuntu? i.e. You're having a build error?
There's an identifier clash between globally-defined "template<...> using ptr" and opencv in-namespace-in-function usage of the identifier. Since couldn't remove inclusion of either of the headers, renamed opentrack identifier. Is there a more proper solution?