错误重载在构建"OpenSubdiv"时具有类似的转换

Error overloads have similar conversions while building "OpenSubdiv"

本文关键字:转换 重载 构建 OpenSubdiv 错误      更新时间:2023-10-16

在构建[OpenSubdiv] (http://graphics.pixar.com/opensubdiv/docs/cmake_build.html):

时遇到以下错误
error C2666: 'OpenSubdiv::v3_0_0_beta::Vtr::internal::StackBuffer<TYPE,SIZE>::operator []' : 4 overloads have similar conversions
触发错误的代码行是:
            for (int i = 0; i < pVertEdges.size(); ++i) {
            cVertEdgeBuffer[i] = _refinement.getEdgeChildEdges(pVertEdges[i])[pVertInEdge[i]];
        }

实例是:

internal::StackBuffer<Index,16> cVertEdgeBuffer(_childLevel._maxValence);

类StackBuffer

中的重载操作符[]似乎有一些歧义。
template <typename TYPE, unsigned int SIZE>
class StackBuffer
{
StackBuffer();
StackBuffer(size_type size);
~StackBuffer();
public:
TYPE &       operator[](size_type index)        { return _data[index]; }
TYPE const & operator[](size_type index) const  { return _data[index]; }
operator TYPE const * () const { return _data; }
operator TYPE *       ()       { return _data; }
};

我将编译从VS2012更改为VS2010,但错误仍然出现。

这个错误是由于OpenSubdiv的源还是由于我的Cmake配置?我添加了OpenSubdiv所需的所有依赖项。

这个问题在OpenSubdiv (dev-branch)中修复了https://github.com/PixarAnimationStudios/OpenSubdiv/issues/622 issuecomment - 111051840