Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
6.14/06, 6.14/08
-
None
-
ArchLinux x86_64, GCC 8.2.1, -std=c++17
Description
When RConfigure.in is run it results in wrongs flags being set in RConfigure.h:
...
|
#define R__HAS_STD_STRING_VIEW /**/
|
#define R__HAS_STD_EXPERIMENTAL_STRING_VIEW /**/
|
...
|
Only one of these should be set, as both being set results in RStingView.hxx selecting the wrong header - <experimental/string_view>, whereas it should select <string_view>. Resulting error is here:
In file included from /build/root-extra/src/build/include/TString.h:28,
|
from /build/root-extra/src/build/include/TDataSetManager.h:26,
|
from /build/root-extra/src/build/include/TDataSetManagerFile.h:24,
|
from /build/root-extra/src/build/proof/afdsmgrd/afdsmgrd/src/afDataSetList.h:22,
|
from /build/root-extra/src/build/proof/afdsmgrd/afdsmgrd/src/afDataSetList.cc:9:
|
/build/root-extra/src/build/include/ROOT/RStringView.hxx:67:17: error: expected type-specifier
|
operator std::string_view() const { return std::string_view(fData,fLength); } |
^~~
|
In file included from /build/root-extra/src/build/include/TDataSetManager.h:26,
|
from /build/root-extra/src/build/include/TDataSetManagerFile.h:24,
|
from /build/root-extra/src/build/proof/afdsmgrd/afdsmgrd/src/afDataSetList.h:22,
|
from /build/root-extra/src/build/proof/afdsmgrd/afdsmgrd/src/afDataSetList.cc:9:
|
/build/root-extra/src/build/include/TString.h:110:13: error: expected type-specifier
|
operator std::string_view() const { return std::string_view(Data(),fExtent); } |
^~~
|
/build/root-extra/src/build/include/TString.h:275:23: error: ‘string_view’ in namespace ‘std’ does not name a type |
TString(const std::string_view &sub); |
^~~~~~~~~~~
|
/build/root-extra/src/build/include/TString.h:275:18: note: ‘std::string_view’ is only available from C++17 onwards
|
TString(const std::string_view &sub); |
^~~
|
/build/root-extra/src/build/include/TString.h:312:37: error: ‘string_view’ in namespace ‘std’ does not name a type |
TString &operator=(const std::string_view &s); |
^~~~~~~~~~~
|
/build/root-extra/src/build/include/TString.h:312:32: note: ‘std::string_view’ is only available from C++17 onwards
|
TString &operator=(const std::string_view &s); |
^~~
|
/build/root-extra/src/build/include/TString.h:439:9: error: ‘string_view’ in namespace ‘std’ does not name a type |
std::string_view View() const { return std::string_view(GetPointer(),Length()); } |
^~~~~~~~~~~
|
/build/root-extra/src/build/include/TString.h:439:4: note: ‘std::string_view’ is only available from C++17 onwards
|
std::string_view View() const { return std::string_view(GetPointer(),Length()); } |
^~~
|
In file included from /build/root-extra/src/build/include/TDataSetManager.h:26,
|
from /build/root-extra/src/build/include/TDataSetManagerFile.h:24,
|
from /build/root-extra/src/build/proof/afdsmgrd/afdsmgrd/src/afDataSetList.h:22,
|
from /build/root-extra/src/build/proof/afdsmgrd/afdsmgrd/src/afDataSetList.cc:9:
|
/build/root-extra/src/build/include/TString.h:834:53: error: ‘string_view’ in namespace ‘std’ does not name a type |
inline Bool_t operator==(const char *s1, const std::string_view &s2) |
^~~~~~~~~~~
|
/build/root-extra/src/build/include/TString.h:834:48: note: ‘std::string_view’ is only available from C++17 onwards
|
inline Bool_t operator==(const char *s1, const std::string_view &s2) |
^~~
|
/build/root-extra/src/build/include/TString.h:834:68: error: ‘Bool_t operator==(const char*, const int&)’ must have an argument of class or enumerated type |
inline Bool_t operator==(const char *s1, const std::string_view &s2) |
^
|
/build/root-extra/src/build/include/TString.h:839:37: error: ‘string_view’ in namespace ‘std’ does not name a type |
inline Bool_t operator==(const std::string_view &s1, const char *s2) |
^~~~~~~~~~~
|
/build/root-extra/src/build/include/TString.h:839:32: note: ‘std::string_view’ is only available from C++17 onwards
|
inline Bool_t operator==(const std::string_view &s1, const char *s2) |
^~~
|
/build/root-extra/src/build/include/TString.h:839:68: error: ‘Bool_t operator==(const int&, const char*)’ must have an argument of class or enumerated type |
inline Bool_t operator==(const std::string_view &s1, const char *s2) |
^
|
/build/root-extra/src/build/include/TString.h:852:37: error: ‘string_view’ in namespace ‘std’ does not name a type |
std::string printValue(const std::string_view* val); |
^~~~~~~~~~~
|
/build/root-extra/src/build/include/TString.h:852:32: note: ‘std::string_view’ is only available from C++17 onwards
|
std::string printValue(const std::string_view* val); |
^~~
|