Skip to content

Compilation error in MacOS with llvm17 #9833

@JinheLin

Description

@JinheLin
dbms/src/Storages/KVStore/MultiRaft/RegionData.cpp:283:21: error: call to constructor of 'RegionDataMemDiff' is ambiguous
  283 |     recordMemChange(RegionDataMemDiff{-cf_data_size, -decoded_data_size});
      |                     ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:32:5: note: candidate constructor
   32 |     RegionDataMemDiff(Type payload_, Type decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:36:5: note: candidate constructor
   36 |     RegionDataMemDiff(UInt64 payload_, UInt64 decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionData.cpp:291:23: error: call to constructor of 'RegionDataMemDiff' is ambiguous
  291 |     updateMemoryUsage(RegionDataMemDiff{rhs.cf_data_size, rhs.decoded_data_size});
      |                       ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:32:5: note: candidate constructor
   32 |     RegionDataMemDiff(Type payload_, Type decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:36:5: note: candidate constructor
   36 |     RegionDataMemDiff(UInt64 payload_, UInt64 decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionData.cpp:359:21: error: call to constructor of 'RegionDataMemDiff' is ambiguous
  359 |     recordMemChange(RegionDataMemDiff{-cf_data_size, 0});
      |                     ^                ~~~~~~~~~~~~~~~~~~
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:32:5: note: candidate constructor
   32 |     RegionDataMemDiff(Type payload_, Type decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:36:5: note: candidate constructor
   36 |     RegionDataMemDiff(UInt64 payload_, UInt64 decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionData.cpp:360:23: error: call to constructor of 'RegionDataMemDiff' is ambiguous
  360 |     updateMemoryUsage(RegionDataMemDiff{-cf_data_size, 0});
      |                       ^                ~~~~~~~~~~~~~~~~~~
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:32:5: note: candidate constructor
   32 |     RegionDataMemDiff(Type payload_, Type decoded_)
      |     ^
dbms/src/Storages/KVStore/MultiRaft/RegionCFDataBase.h:36:5: note: candidate constructor
   36 |     RegionDataMemDiff(UInt64 payload_, UInt64 decoded_)
      |     ^
4 errors generated.
[155/1049] Building CXX object dbms/src/Storages/KVStore/CMakeFiles/kvstore.dir/MultiRaft/Disagg/CheckpointIngestInfo.cpp.o
ninja: build stopped: subcommand failed.

struct RegionDataMemDiff
{
using Type = Int64;
Type payload;
Type decoded;
RegionDataMemDiff(Type payload_, Type decoded_)
: payload(payload_)
, decoded(decoded_)
{}
RegionDataMemDiff(UInt64 payload_, UInt64 decoded_)
: payload(static_cast<Type>(payload_))
, decoded(static_cast<Type>(decoded_))
{}
RegionDataMemDiff()
: payload(0)
, decoded(0)
{}

These two function overloads are too similar...

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions