DEV Community

Andrey Kudryavtsev
Andrey Kudryavtsev

Posted on

VS C++ compiler bug

Hello all, just interesting. VS2022 compiles this code fine (celltris is a pointer and does not have size()) :

/** Intersect range of cells. */
template <class T> void intersectMultiCells(std::vector<LINT> *activecells, LINT cell0, LINT cell1,
  TTriangles<T> *tris, TTriangles<T> *other, 
  std::vector<std::vector<LINT>> *celltris, std::vector<std::vector<LINT>> *ocelltris,
  std::vector<TPoint<T>> *centres, std::vector<TPoint<T>> *ocentres,
  // output :
  std::vector<std::pair<LINT,LINT>> *intersected, std::vector<TPoint<T>> *UVintrs,
  std::vector<std::pair<TPoint<T>,TPoint<T>>> *edges,
  T tolerance, T parmtolerance)
{
  for (LINT i = cell0; i <= cell1; i++)
  {
    LINT index = (*activecells)[i];
    intersectCells(tris,other,index,

#if 0
// **THIS COMPILES! celltris is a pointer**
      celltris,0,int(celltris[index].size()) - 1,
      ocelltris,0,int(ocelltris[index].size()) - 1,
#else
// it should be :
      celltris,0,int((*celltris)[index].size()) - 1,
      ocelltris,0,int((*ocelltris)[index].size()) - 1,
      centres,ocentres,intersected,UVintrs,edges,tolerance,parmtolerance);
#endif
  }
}

Enter fullscreen mode Exit fullscreen mode

Top comments (0)