wlav / cppyy

Other
384 stars 38 forks source link

Remove Windows workaround for `std::endl` that is not needed anymore #220

Open guitargeek opened 3 months ago

guitargeek commented 3 months ago

I extended my ROOT synchronization PR to now also update the Python part of cppyy, and the only problem was this Windows workaround that caused all tests to fail (both 32 and 64 bit): https://github.com/root-project/root/pull/14507#issuecomment-1990223500

I guess it's not needed anymore with the current LLVM version used in ROOT and cppyy?

Let's see if the tests in the sync PR are green now on Windows (besides a handful failures related to CPyCppyy that I still need to figure out).

wlav commented 3 months ago

This seems to be specific to having this:

  void Print() override {
     TBranchProxy::Print();
     std::cout << "fWhere " << fWhere << std::endl;
     if (fWhere) std::cout << "value? " << *(unsigned char*)GetStart() << std::endl;
  }

parsed by Cling prior, in TBranchProxy.h, to the explicit instantiation. I.e. for non-ROOT installs, there would be no clash and likely still necessary. (It's an odd problem that I've never been able to track down exactly b/c the issue with std::endl was never easily/consistently reproducible. I think it has to do with the flush the output buffer more so than the symbol b/c of the usual problem of Windows having separate allocators per DLL.)