dbsxdbsx edited a comment on issue #14385: OpenCV 4.0 is currently not support 
on win10
URL: 
https://github.com/apache/incubator-mxnet/issues/14385#issuecomment-471390025
 
 
   @wkcn,for context of error message, the blew is the total errors:
   ```
   严重性  代码      说明      项目      文件      行       禁止显示状态
   错误   MSB3721 命令“"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v10.1\bin\nvcc.exe" 
-gencode=arch=compute_50,code=\"sm_50,compute_50\" --use-local-env -ccbin 
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -x cu  
-I"C:\Program Files 
(x86)\IntelSWTools\compilers_and_libraries_2019.2.190\windows\mkl\include" 
-IC:\mxnet\3rdparty\mkldnn\include -IC:\mxnet\include -IC:\mxnet\src 
-IC:\mxnet\3rdparty\mshadow -IC:\mxnet\3rdparty\cub 
-IC:\mxnet\3rdparty\tvm\nnvm\include -IC:\mxnet\3rdparty\tvm\include 
-I"C:\mxnet\3rdparty\dmlc-core\include" -IC:\mxnet\3rdparty\dlpack\include 
-IC:\opencv4\build\include -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v10.1\include" -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v10.1\include"     --keep-dir x64\Release -maxrregcount=0  
--machine 64 --compile -cudart static -Xcompiler="/MP /bigobj -openmp -Ob2 -Gy" 
   -DNDEBUG -DWIN32_LEAN_AND_MEAN -DDMLC_USE_CXX11 -DMSHADOW_IN_CXX11 
-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DMXNET_EXPORTS 
-DNNVM_EXPORTS -DDMLC_STRICT_CXX11 -DNOMINMAX -DUSE_MKL=1 -DCUB_MKL=1 
-DMXNET_USE_MKLDNN=1 -DMSHADOW_USE_CUDA=1 -DMXNET_USE_NCCL=0 -DUSE_MKL 
-DUSE_CBLAS -DMSHADOW_USE_CBLAS=0 -DMSHADOW_USE_MKL=1 -DMXNET_USE_BLAS_MKL=1 
-DMXNET_USE_OPENCV=1 -DMXNET_USE_OPENMP=1 -DMXNET_USE_LAPACK=1 -DUSE_CUDNN 
-DMSHADOW_USE_CUDNN=1 -DMXNET_ENABLE_CUDA_RTC=1 -DMXNET_USE_CUDA=1 
-D"CMAKE_INTDIR=\"Release\"" -Dmxnet_EXPORTS -DNDEBUG -DWIN32_LEAN_AND_MEAN 
-DDMLC_USE_CXX11 -DMSHADOW_IN_CXX11 -D_SCL_SECURE_NO_WARNINGS 
-D_CRT_SECURE_NO_WARNINGS -DMXNET_EXPORTS -DNNVM_EXPORTS -DDMLC_STRICT_CXX11 
-DNOMINMAX -DUSE_MKL=1 -DCUB_MKL=1 -DMXNET_USE_MKLDNN=1 -DMSHADOW_USE_CUDA=1 
-DMXNET_USE_NCCL=0 -DUSE_MKL -DUSE_CBLAS -DMSHADOW_USE_CBLAS=0 
-DMSHADOW_USE_MKL=1 -DMXNET_USE_BLAS_MKL=1 -DMXNET_USE_OPENCV=1 
-DMXNET_USE_OPENMP=1 -DMXNET_USE_LAPACK=1 -DUSE_CUDNN -DMSHADOW_USE_CUDNN=1 
-DMXNET_ENABLE_CUDA_RTC=1 -DMXNET_USE_CUDA=1 -D"CMAKE_INTDIR=\"Release\"" 
-Dmxnet_EXPORTS -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W1 /nologo /O2 
/Fdmxnet.dir\Release\vc140.pdb /FS /Zi  /MT " -o 
mxnet.dir\Release\/src/operator/image/resize.cu.obj 
"C:\mxnet\src\operator\image\resize.cu"”已退出,返回代码为 1。    mxnet   C:\Program 
Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 
10.1.targets    757     
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误   MSB3721 命令“"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v10.1\bin\nvcc.exe" 
-gencode=arch=compute_50,code=\"sm_50,compute_50\" --use-local-env -ccbin 
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -x cu  
-I"C:\Program Files 
(x86)\IntelSWTools\compilers_and_libraries_2019.2.190\windows\mkl\include" 
-IC:\mxnet\3rdparty\mkldnn\include -IC:\mxnet\include -IC:\mxnet\src 
-IC:\mxnet\3rdparty\mshadow -IC:\mxnet\3rdparty\cub 
-IC:\mxnet\3rdparty\tvm\nnvm\include -IC:\mxnet\3rdparty\tvm\include 
-I"C:\mxnet\3rdparty\dmlc-core\include" -IC:\mxnet\3rdparty\dlpack\include 
-IC:\opencv4\build\include -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v10.1\include" -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v10.1\include"     --keep-dir x64\Release -maxrregcount=0  
--machine 64 --compile -cudart static -Xcompiler="/MP /bigobj -openmp -Ob2 -Gy" 
   -DNDEBUG -DWIN32_LEAN_AND_MEAN -DDMLC_USE_CXX11 -DMSHADOW_IN_CXX11 
-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DMXNET_EXPORTS 
-DNNVM_EXPORTS -DDMLC_STRICT_CXX11 -DNOMINMAX -DUSE_MKL=1 -DCUB_MKL=1 
-DMXNET_USE_MKLDNN=1 -DMSHADOW_USE_CUDA=1 -DMXNET_USE_NCCL=0 -DUSE_MKL 
-DUSE_CBLAS -DMSHADOW_USE_CBLAS=0 -DMSHADOW_USE_MKL=1 -DMXNET_USE_BLAS_MKL=1 
-DMXNET_USE_OPENCV=1 -DMXNET_USE_OPENMP=1 -DMXNET_USE_LAPACK=1 -DUSE_CUDNN 
-DMSHADOW_USE_CUDNN=1 -DMXNET_ENABLE_CUDA_RTC=1 -DMXNET_USE_CUDA=1 
-D"CMAKE_INTDIR=\"Release\"" -Dmxnet_EXPORTS -DNDEBUG -DWIN32_LEAN_AND_MEAN 
-DDMLC_USE_CXX11 -DMSHADOW_IN_CXX11 -D_SCL_SECURE_NO_WARNINGS 
-D_CRT_SECURE_NO_WARNINGS -DMXNET_EXPORTS -DNNVM_EXPORTS -DDMLC_STRICT_CXX11 
-DNOMINMAX -DUSE_MKL=1 -DCUB_MKL=1 -DMXNET_USE_MKLDNN=1 -DMSHADOW_USE_CUDA=1 
-DMXNET_USE_NCCL=0 -DUSE_MKL -DUSE_CBLAS -DMSHADOW_USE_CBLAS=0 
-DMSHADOW_USE_MKL=1 -DMXNET_USE_BLAS_MKL=1 -DMXNET_USE_OPENCV=1 
-DMXNET_USE_OPENMP=1 -DMXNET_USE_LAPACK=1 -DUSE_CUDNN -DMSHADOW_USE_CUDNN=1 
-DMXNET_ENABLE_CUDA_RTC=1 -DMXNET_USE_CUDA=1 -D"CMAKE_INTDIR=\"Release\"" 
-Dmxnet_EXPORTS -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W1 /nologo /O2 
/Fdmxnet.dir\Release\vc140.pdb /FS /Zi  /MT " -o 
mxnet.dir\Release\/src/operator/image/image_random.cu.obj 
"C:\mxnet\src\operator\image\image_random.cu"”已退出,返回代码为 1。        mxnet   
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 
10.1.targets    757     
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           incomplete type is not allowed  mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 45      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           name followed by "::" must be a class or namespace name mxnet   
c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 52      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   错误           template instantiation resulted in unexpected function type of 
"std::true_type (std::integral_constant<__nv_bool, false> *)" (the meaning of a 
name may have changed since the template declaration -- the type of the 
template is "std::true_type 
(std::is_same<std::decay<decltype((<expression>))>::type, void>::type *)")   
mxnet   c:\opencv4\build\include\opencv2\core\cvstd_wrapper.hpp 49      
   
   ```
   for code of `cvstd_wrapper.hpp` in OPENCV4.0:
   ```
   // This file is part of OpenCV project.
   // It is subject to the license terms in the LICENSE file found in the 
top-level directory
   // of this distribution and at http://opencv.org/license.html.
   
   #ifndef OPENCV_CORE_CVSTD_WRAPPER_HPP
   #define OPENCV_CORE_CVSTD_WRAPPER_HPP
   
   #include "opencv2/core/cvdef.h"
   
   #include <string>
   #include <memory>  // std::shared_ptr
   #include <type_traits>  // std::enable_if
   
   namespace cv {
   
   using std::nullptr_t;
   
   //! @addtogroup core_basic
   //! @{
   
   #ifdef CV_DOXYGEN
   
   template <typename _Tp> using Ptr = std::shared_ptr<_Tp>;  // In ideal world 
it should look like this, but we need some compatibility workarounds below
   
   template<typename _Tp, typename ... A1> static inline
   Ptr<_Tp> makePtr(const A1&... a1) { return std::make_shared<_Tp>(a1...); }
   
   #else  // cv::Ptr with compatibility workarounds
   
   // It should be defined for C-API types only.
   // C++ types should use regular "delete" operator.
   template<typename Y> struct DefaultDeleter;
   #if 0
   {
       void operator()(Y* p) const;
   };
   #endif
   
   namespace sfinae {
   template<typename C, typename Ret, typename... Args>
   struct has_parenthesis_operator
   {
   private:
       template<typename T>
       static CV_CONSTEXPR std::true_type check(typename std::is_same<typename 
std::decay<decltype(std::declval<T>().operator()(std::declval<Args>()...))>::type,
 Ret>::type*);
   
       template<typename> static CV_CONSTEXPR std::false_type check(...);
   
       typedef decltype(check<C>(0)) type;
   
   public:
       static CV_CONSTEXPR bool value = type::value;
   };
   } // namespace sfinae
   
   template <typename T, typename = void>
   struct has_custom_delete
           : public std::false_type {};
   
   template <typename T>
   struct has_custom_delete<T, typename std::enable_if< 
sfinae::has_parenthesis_operator<DefaultDeleter<T>, void, T*>::value >::type >
           : public std::true_type {};
   
   
   template<typename T>
   struct Ptr : public std::shared_ptr<T>
   {
   #if 0
       using std::shared_ptr<T>::shared_ptr;  // GCC 5.x can't handle this
   #else
       inline Ptr() CV_NOEXCEPT : std::shared_ptr<T>() {}
       inline Ptr(nullptr_t) CV_NOEXCEPT : std::shared_ptr<T>(nullptr) {}
       template<typename Y, typename D> inline Ptr(Y* p, D d) : 
std::shared_ptr<T>(p, d) {}
       template<typename D> inline Ptr(nullptr_t, D d) : 
std::shared_ptr<T>(nullptr, d) {}
   
       template<typename Y> inline Ptr(const Ptr<Y>& r, T* ptr) CV_NOEXCEPT : 
std::shared_ptr<T>(r, ptr) {}
   
       inline Ptr(const Ptr<T>& o) CV_NOEXCEPT : std::shared_ptr<T>(o) {}
       inline Ptr(Ptr<T>&& o) CV_NOEXCEPT : std::shared_ptr<T>(std::move(o)) {}
   
       template<typename Y> inline Ptr(const Ptr<Y>& o) CV_NOEXCEPT : 
std::shared_ptr<T>(o) {}
       template<typename Y> inline Ptr(Ptr<Y>&& o) CV_NOEXCEPT : 
std::shared_ptr<T>(std::move(o)) {}
   #endif
       inline Ptr(const std::shared_ptr<T>& o) CV_NOEXCEPT : 
std::shared_ptr<T>(o) {}
       inline Ptr(std::shared_ptr<T>&& o) CV_NOEXCEPT : 
std::shared_ptr<T>(std::move(o)) {}
   
       // Overload with custom DefaultDeleter: Ptr<IplImage>(...)
       template<typename Y>
       inline Ptr(const std::true_type&, Y* ptr) : std::shared_ptr<T>(ptr, 
DefaultDeleter<Y>()) {}
   
       // Overload without custom deleter: Ptr<std::string>(...);
       template<typename Y>
       inline Ptr(const std::false_type&, Y* ptr) : std::shared_ptr<T>(ptr) {}
   
       template<typename Y = T>
       inline Ptr(Y* ptr) : Ptr(has_custom_delete<Y>(), ptr) {}
   
       // Overload with custom DefaultDeleter: Ptr<IplImage>(...)
       template<typename Y>
       inline void reset(const std::true_type&, Y* ptr) { 
std::shared_ptr<T>::reset(ptr, DefaultDeleter<Y>()); }
   
       // Overload without custom deleter: Ptr<std::string>(...);
       template<typename Y>
       inline void reset(const std::false_type&, Y* ptr) { 
std::shared_ptr<T>::reset(ptr); }
   
       template<typename Y>
       inline void reset(Y* ptr) { Ptr<T>::reset(has_custom_delete<Y>(), ptr); }
   
       template<class Y, class Deleter>
       void reset(Y* ptr, Deleter d) { std::shared_ptr<T>::reset(ptr, d); }
   
       void reset() CV_NOEXCEPT { std::shared_ptr<T>::reset(); }
   
       Ptr& operator=(const Ptr& o) { std::shared_ptr<T>::operator =(o); return 
*this; }
       template<typename Y> inline Ptr& operator=(const Ptr<Y>& o) { 
std::shared_ptr<T>::operator =(o); return *this; }
   
       T* operator->() const CV_NOEXCEPT { return std::shared_ptr<T>::get();}
       typename std::add_lvalue_reference<T>::type operator*() const 
CV_NOEXCEPT { return *std::shared_ptr<T>::get(); }
   
       // OpenCV 3.x methods (not a part of standart C++ library)
       inline void release() { std::shared_ptr<T>::reset(); }
       inline operator T* () const { return std::shared_ptr<T>::get(); }
       inline bool empty() const { return std::shared_ptr<T>::get() == nullptr; 
}
   
       template<typename Y> inline
       Ptr<Y> staticCast() const CV_NOEXCEPT { return 
std::static_pointer_cast<Y>(*this); }
   
       template<typename Y> inline
       Ptr<Y> constCast() const CV_NOEXCEPT { return 
std::const_pointer_cast<Y>(*this); }
   
       template<typename Y> inline
       Ptr<Y> dynamicCast() const CV_NOEXCEPT { return 
std::dynamic_pointer_cast<Y>(*this); }
   };
   
   template<typename _Tp, typename ... A1> static inline
   Ptr<_Tp> makePtr(const A1&... a1)
   {
       static_assert( !has_custom_delete<_Tp>::value, "Can't use this makePtr 
with custom DefaultDeleter");
       return (Ptr<_Tp>)std::make_shared<_Tp>(a1...);
   }
   
   #endif // CV_DOXYGEN
   
   //! @} core_basic
   } // cv
   
   #endif //OPENCV_CORE_CVSTD_WRAPPER_HPP
   ```
   the code at line 45 is 
   ```
    static CV_CONSTEXPR std::true_type check(typename std::is_same<typename 
std::decay<decltype(std::declval<T>().operator()(std::declval<Args>()...))>::type,
 Ret>::type*);
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to