exaloop / codon

A high-performance, zero-overhead, extensible Python compiler using LLVM
https://docs.exaloop.io/codon
Other
13.95k stars 498 forks source link

bench/set_partition c++ error: no matching function for call to 'partition_filtered' #540

Closed marioroy closed 4 months ago

marioroy commented 4 months ago

I ran the bench.sh script. The c++ set_partition demonstration failed.

./set_partition/set_partition.cpp:27:37: error: no template named 'function' in namespace 'std'
   27 |                                std::function<void(const vec<vec<int>> &)> callback,
      |                                ~~~~~^
./set_partition/set_partition.cpp:70:3: error: no matching function for call to 'partition_filtered'
   70 |   partition_filtered(new_collection, loop, minsize, forgive + 1);
      |   ^~~~~~~~~~~~~~~~~~
./set_partition/set_partition.cpp:26:13: note: candidate function not viable: no known conversion from '(lambda at ./set_partition/set_partition.cpp:35:15)' to 'int' for 2nd argument
   26 | inline void partition_filtered(const vec<int> &collection,
      |             ^
   27 |                                std::function<void(const vec<vec<int>> &)> callback,
      |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./set_partition/set_partition.cpp:89:3: error: no matching function for call to 'partition_filtered'
   89 |   partition_filtered(something, callback, 2);
      |   ^~~~~~~~~~~~~~~~~~
./set_partition/set_partition.cpp:26:13: note: candidate function not viable: no known conversion from '(lambda at ./set_partition/set_partition.cpp:82:19)' to 'int' for 2nd argument
   26 | inline void partition_filtered(const vec<int> &collection,
      |             ^
   27 |                                std::function<void(const vec<vec<int>> &)> callback,
      |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 errors generated.
arshajii commented 4 months ago

Make sure you're using a compiler that supports C++17 (-std=c++17); e.g. in my case:

Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

then clang++ -std=c++17 -O3 set_partition.cpp works without any issue.

arshajii commented 4 months ago

Should be fixed on develop.