我已经退出了opencv,当我试图在我的命名空间内修改一次专门化的模板代码时,我得到了错误:
make -k
[100%] Building CXX object object_detection.cpp.o
In file included from object_detection.cpp:1:0:
object_detection.h:370:75: error: specialization of 'void cv::Ptr<_Tp>::delete_obj() [with _Tp = CvHaarClassifierCascade]' in different namespace [-fpermissive]
object_detection.h:370:30: error: from definition of 'void cv::Ptr<_Tp>::delete_obj() [with _Tp = CvHaarClassifierCascade]' [-fpermissive]
我明白,我不应该能够在不同的命名空间专门化模板代码,但有出路吗?
- 重新打开他们的命名空间,并专攻它。
- 对于函数,如果它忠实地通过ADL使用,则在参数的命名空间中创建覆盖。
- 检查源模板是否使用了trait类或其他类似的可以拦截的技术。