Re: C++0x syntax question
Mark S Waterbury <[email protected]>
| Newsgroups | gmane.comp.lang.as400.c |
|---|---|
| Message-ID | <[email protected]> |
Kelly,
Did this code ever compile on IBM i under previous versions of the IBM
ILE C++ compiler?
IBM does not strictly follow the ANSI standards for either C or C++ ...
You could also install the open-source GCC compiler and it would
probably compile this code for you ... of course, the resulting object
code would run under PASE ...
Mark
> On 9/12/2017 10:57 AM, Kelly Beard wrote:
> I am attempting to compile the following code under the newer compiler
> under V7R3 and the LANGLVL *EXTENDED0X option enabled. I am using the
> 5799PTL 'icc' compiler front-end to do this. The command default for
> CRTCPPMOD has been altered to always have *EXTENDED0X on by default. I am
> getting this:
>
> "testme.cpp", line 14.18: CZP0130 (30) "start" is not declared.
>
> The offending line looks like:
>
> T::size_type start = 0;
>
> So, is there a change to the C++11 syntax here? Thanks in advance, as
> always. Here is the test program.
>
> #include <iostream>
> #include <string>
> #include <sstream>
> #include <iomanip>
> #include <vector>
> #include <unistd.h>
>
> using namespace std;
>
>
> template<typename T> vector<T> split(const T & str, const T & delimiters)
> {
> vector<T> v;
> T::size_type start = 0;
> size_t pos = str.find_first_of(delimiters, start);
> while (pos != T::npos) {
> if (pos != start) { // ignore empty tokens
> v.push_back(str.substr(start, pos - start));
> }
> start = pos + 1;
> pos = str.find_first_of(delimiters, start);
> }
> if (start < str.length()) { // ignore trailing delimiter
> v.push_back(str.substr(start, pos - start));
> }
> return v;
> }
>
>
> int main(int argc, char* argv[])
> {
> string str = "this,is,a,test, of whatever, like, ok.";
> vector<string> v = split<string>(str, ", ");
> for (int i = 0; i < v.size(); ++i) {
> cout << v[i] << endl;
> }
> }
>
>
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/c400-l
or email: [email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/c400-l.