phylo42 / IPK

Inference of phylo-k-mers
MIT License
4 stars 1 forks source link

- removed noexcept in move assignment operator of class phylo_kmer_db #6

Open blinard-BIOINFO opened 2 years ago

blinard-BIOINFO commented 2 years ago

_phylo_kmer_db object do not allow operator '=' (delete), but allows move assignment.

However, its current definition contains the noexcept qualifier which raise an error at compilation time:

xpas/include/xpas/phylo_kmer_db.h:46:25: note: ‘xpas::_phylo_kmer_db<PhyloKmer>& xpas::_phylo_kmer_db<PhyloKmer>::operator=(xpas::_phylo_kmer_db<PhyloKmer>&&) noexcept [with PhyloKmer = xpas::positioned_phylo_kmer]’ 
is implicitly deleted because its exception-specification does not match the implicit exception-specification ‘’
   46 |         _phylo_kmer_db& operator=(_phylo_kmer_db&&) noexcept = default;
      |                         ^~~~~~~~

I removed the noexcept qualifier which solves the issue until you deal with implicit exception-specification.

blinard-BIOINFO commented 2 years ago

After more investigation, this is due to C11 vs C17.

blinard-BIOINFO commented 1 year ago

@nromashchenko Any chance you accept this ? Any chance you accept this ? This PR is more than 6 month old. Currently I just cannot clone clappas and use IPK as a submodule without forcing IPK to branch clapas_compatibility

nromashchenko commented 1 year ago

Yes, sorry, swamped with other things right now.

The problem with CLAPPAS is that it depends on a very old version where IPK and I2L were the same thing. That is, you have all code for building databases in your project, while you actually only need a few important headers + serialization.

In the future, we should update CLAPPAS (and SHERPAS) so that it depends only on this repository: https://github.com/phylo42/I2L

Then, this request belongs to another repo. These files don't exist here anymore. However, changing switching to I2L is not just a drop-in update: I did not release XPAS versions for a long time, and the update contains quite a few changes including renaming the namespace where all classes live.

What I suggest you to do right now is to stick with the compatibility branch, and when you have a "bug cleaning day" at work, update to I2L and test the current version of I2L. I will accept the request with no problem then.

I can help with figuring out the update process if needed.

blinard-BIOINFO commented 1 year ago

Ok, btu the time being I force clappas to use this branch and when as a second step I will move to I2L.