fc9077e0c5
This resolves a compiler ambiguity I hit during development. In my case, I created an `ArrayHandleDecorator` with one of the arrays being an `ArrayHandleTransform`. The ambiguity occurs in function `DecoratorStorageTraits<...>::BuffersToArray`, here an `ArrayHandleTransform` is constructed using buffers (`std::vector<vtkm::cont::internal::Buffer>`) This constructor is not defined for `ArrayHandleTransform`, but it's defined for its superclass (`vtkm::cont::ArrayHandle`). `ArrayHandleTransform` does have a non-explicit constructor that takes the array to be transformed and the transform-functor as parameters, where the later has a default value. This produces the following ambiguous options for the compiler: 1. Create a "to-be-transformed" ArrayHandle instance using the buffers, call the `ArrayHandleTransform` constructor with this array with the defaulted functor parameter. 2. Create the superclass instance using the buffer and call the `ArrayHandleTransform` constructor that takes the superclass. In this situation, option 2 is the correct choice. The ambiguity is resolved by marking the constructors that take buffers as explicit. These constructors are also added for the derived classess via the `VTK_M_ARRAY_HANDLE_SUBCLASS_IMPL` macro. |
||
---|---|---|
.. | ||
colorconversion | ||
cosmotools | ||
internal | ||
spatialstructure | ||
splatkernels | ||
testing | ||
wavelets | ||
AverageByKey.h | ||
AveragePointNeighborhood.h | ||
BoundaryTypes.h | ||
CellDeepCopy.h | ||
CMakeLists.txt | ||
CosmoTools.h | ||
DescriptiveStatistics.h | ||
DispatcherCellNeighborhood.h | ||
DispatcherMapField.h | ||
DispatcherMapTopology.h | ||
DispatcherPointNeighborhood.h | ||
DispatcherReduceByKey.h | ||
FieldStatistics.h | ||
KernelSplatter.h | ||
Keys.h | ||
Keys.hxx | ||
KeysSignedTypes.cxx | ||
KeysUnsignedTypes.cxx | ||
MaskIndices.h | ||
MaskNone.h | ||
MaskSelect.cxx | ||
MaskSelect.h | ||
NDimsHistMarginalization.h | ||
Normalize.h | ||
ScalarsToColors.h | ||
ScalarsToColors.hxx | ||
ScatterCounting.cxx | ||
ScatterCounting.h | ||
ScatterIdentity.h | ||
ScatterPermutation.h | ||
ScatterUniform.h | ||
StableSortIndices.h | ||
StreamLineUniformGrid.h | ||
TriangleWinding.h | ||
vtkm.module | ||
WaveletCompressor.h | ||
WorkletCellNeighborhood.h | ||
WorkletMapField.h | ||
WorkletMapTopology.h | ||
WorkletNeighborhood.h | ||
WorkletPointNeighborhood.h | ||
WorkletReduceByKey.h |