JuliaInterop / libcxxwrap-julia

C++ library for backing CxxWrap.jl
Other
85 stars 43 forks source link

fix: check if std::pair has less than #163

Closed PraneethJain closed 5 months ago

PraneethJain commented 5 months ago

https://github.com/JuliaInterop/CxxWrap.jl#main

std::pair directly has a operator< before c++20, and since it is not treated as a container, std::set was being applied to incompatible types. The tests weren't failing here because since c++20 <=> is used to synthesize operator< (https://en.cppreference.com/w/cpp/utility/pair/operator_cmp)

Because of this, inconsistent behavior was being observed https://pastebin.ai/0stwtqgvry The above program outputs different values for c++17 and c++20

This PR fixes this issue by explicitly checking if the pair types are comparable.

PraneethJain commented 5 months ago

@barche this should fix https://github.com/JuliaIPU/IPUToolkit.jl/pull/66