hosseinmoein / DataFrame

C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types and contiguous memory storage
https://hosseinmoein.github.io/DataFrame/
BSD 3-Clause "New" or "Revised" License
2.44k stars 310 forks source link

Issues while compiling with DataFrame headers #268

Closed aryan-chakrabarti closed 9 months ago

aryan-chakrabarti commented 10 months ago

Hi, I am trying to compile a simple Hello World program to play around with the DataFrames. However, I get this kind of error when I try to compile and many more errors like this:

[build] In file included from /usr/local/include/DataFrame/DataFrame.h:32: [build] In file included from /usr/local/include/DataFrame/DataFrameStatsVisitors.h:36: [build] /usr/local/include/DataFrame/Utils/Concepts.h:69:18: error: expected concept name with optional arguments [build] { a > b } -> std::convertible_to<bool>; [build] ^ [build] /usr/local/include/DataFrame/Utils/Concepts.h:70:18: error: expected concept name with optional arguments [build] { a < b } -> std::convertible_to<bool>; [build] ^ [build] /usr/local/include/DataFrame/Utils/Concepts.h:71:19: error: expected concept name with optional arguments [build] { a >= b } -> std::convertible_to<bool>; [build] ^ [build] /usr/local/include/DataFrame/Utils/Concepts.h:72:19: error: expected concept name with optional arguments [build] { a <= b } -> std::convertible_to<bool>; [build] ^ [build] /usr/local/include/DataFrame/Utils/Concepts.h:73:19: error: expected concept name with optional arguments [build] { a == b } -> std::convertible_to<bool>; [build] ^ [build] /usr/local/include/DataFrame/Utils/Concepts.h:74:19: error: expected concept name with optional arguments [build] { a != b } -> std::convertible_to<bool>; [build] ^ [build] /usr/local/include/DataFrame/Utils/Concepts.h:96:10: error: no template named 'input_iterator' in namespace 'std'; did you mean 'insert_iterator'? [build] std::input_iterator<T> && [build] ~~~~~^~~~~~~~~~~~~~ [build] insert_iterator [build] /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/c++/v1/iterator:951:28: note: 'insert_iterator' declared here [build] class _LIBCPP_TEMPLATE_VIS insert_iterator

Any reason why its failing to compile with this info? In my Cmake I make sure to set the CXX Standard to 20 and target cxx_std_20 to all of my libraries. I am running this on MacOs Monterey 12.1, with a 2016 macbook pro.

hosseinmoein commented 10 months ago

I have never seen these before. My guess is that your compiler is not fully C++20 compliant or too old (https://stackoverflow.com/questions/75942918/expected-concept-name-with-optional-arguments)

Also, are you using the CMake files in the repo and following the instructions in README, or are you using your own CMake file? If the latter, are you able to compile the library and its test suit with the provided CMake files?

aryan-chakrabarti commented 10 months ago

Thanks for the quick response! I also have a feeling that my compiler might be too old so I’ll try and see if I can update my standard library. But what’s weird is that after downloading the data frame repo I cd’d inside the root directory of the repo and followed the instructions to install from the ReadMe with the specified arguments, and this error still showed up. But when I tried doing cmake and make/make install without any of the arguments my computer seemed to install the library and include files just fine.

hosseinmoein commented 10 months ago

That's because 99% of the library is header-only and 99.9% of that is template code. So if you don't build the test suit, none of template and concept code will actually be instantiated/compiled

aryan-chakrabarti commented 10 months ago

Ah okay that makes sense, I will try updating my standard library and will update this issue accordingly.