Add const char* entry to ADIOS constructors to avoid ugliness #2761
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As reported by @khuck , the ADIOS2 C++ API has some unexpected behaviour. In particular, constructors like this:
adios2::ADIOS adios("config.xml");
Do not match with this constructor:
ADIOS(const std::string &configFile, const bool debugMode = true);
Instead, they match with this constructor:
ADIOS(const bool debugMode = true);
Because C++ (at least some compilers) would preferentially convert the "const char*" to "bool", resulting in a config file specification that is silently ignored. For more info see:
https://www.bfilipek.com/2019/07/surprising-conversions-char-bool.html
This PR adds a new entry to the C++ API:
ADIOS(const char *configFile);
And adds a test to make sure that the simple ADIOS("configfile.xml") specification results in an attempt to parse that file, not the specification being ignored. We might want to further examine the ADIOS API for similar instances.