Cling & C++17 15character

where can I find “The Statement of Cling C++98,11,14,17,20 Compliance”? :slight_smile:

Regards. Valeriy

I am not sure what is this “document”. May be @Axel or @vvassilev know.

cling supports all standards up to C++17 (with basically the same level of compliance as clang). C++20 is not supported yet.


#include <filesystem
using filesystem= fs

If that’s meant to say "I don’t seem to be able to use filesystem":

root [0] __cplusplus
(long) 201703
root [1] #include <filesystem>
root [2] std::filesystem::status("/foo").type()
(std::filesystem::file_type) (std::__1::__fs::filesystem::file_type::not_found) : (signed char) -1

I.e. make sure you actually built ROOT with C++17.

I found some issues in using <filesystem> with runtime modules on and in value-printing related types at the prompt, now tracked at Cannot import <filesystem> with runtime modules · Issue #9670 · root-project/root · GitHub and Crash when value-printing `path` objects · Issue #9672 · root-project/root · GitHub. Thank you for reporting @xtovo .


I would get rid of all methods which exist in C++20+ from ROOT7
Digging in ROOT sources I didnt mention any influance of C++20+ style.
Why are you still live in 98?

We don’t, Valeriy, and I’m happy to explain this:

  • We will not rewrite all of ROOT to have it use C++20. We can spend our time in a much more productive way.
  • We create new features with modern C++. The newest we can use is C++17, so that’s what RNTuple and other new code requires.
  • We generally don’t get rid of highly used old code (TTree, TList, etc), we just carry it along. There’s not point in deleting it: thousands of people still use it. Instead we use a carrot (!) to move them over to the new parts: performance, ease of use, clear interfaces, way better documentation, better interoperability (Python, other libraries, the standard lib etc).

Let’s focus on technical issues you have, Valeriy; the forum isn’t the best venue for philosophical discussions.

I just tried to find out where my beloved ROOT is going on.
No answer I got
In fact from ROOT I need only 3 things

  1. cling
  2. persistency
  3. RootJs like canvas

Everything else must be plugged as pip -i (BOOTing)
just make a quiz which parts of ROOT are used the most.
For sure there are a lot of dead code there, totally unknown, e.g. Root Gui Builder

Where Hercules to purge this stuff to smell ROOT like arose

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.