opencv: OpenCV 4.4 - error: call to implicitly-deleted default constructor of 'cv::gimpl::Op'

System information (version)
  • OpenCV => 4.4
  • Operating System / Platform => Linux OpenMandriva Cooker
  • Compiler => LLVM/Clang 10.0.1
Detailed description

Trying build new OpenCV 4.4 for OpenMabdriva Cooker and at build time see error: /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../include/c++/10.1.1/bits/stl_construct.h:109:38: error: call to implicitly-deleted default constructor of 'cv::gimpl::Op' Full build log here: https://file-store.openmandriva.org/api/v1/file_stores/a96e50f00d1eb39a0ab11bd9da473347a3446f11.log?show=true

Steps to reproduce

Install OpenMandriva Cooker Try build OpenCV 4.4 with Clang 10.0.1

Issue submission checklist
  • I report the issue, it’s not a question
  • I checked the problem with documentation, FAQ, open issues, answers.opencv.org, Stack Overflow, etc and have not found solution
  • I updated to latest OpenCV version and the issue is still there
  • There is reproducer code and related data files: videos, images, onnx, etc

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 17 (13 by maintainers)

Most upvoted comments

I’m running into the same problem when using clang 11.0-rc1. The difference between the working and non-working builds are probably the STL implementations - @AngryPenguinPL and I are both using libstdc++ from gcc 10.1.

The problem is that in the code you posted, ts.resize(sz) is called to resize the the vector – which allocates objects to be added to the vector, but T in this case is cv::gimpl::Op which doesn’t have a constructor. The default constructor isn’t there because cv::gimpl::Op contains a cv::GKernel, which in turn contains a const GSpecs and a const GShapes. Removing the const from the inSpecs and outShapes members of cv::GKernel “fixes” (rather, hides) the problem.