Re: C++0x syntax question

Kelly Beard <[email protected]>
Newsgroups gmane.comp.lang.as400.c
Message-ID <CAOvM2Stv=R5GZC8_pX2=vgj8ben-H87h1+UqSRX_QXRq2ubjmQ@mail.gmail.com>
Take away the *EXTENDED0X option and it compiles just fine.

On Tue, Sep 12, 2017 at 10:21 AM, Mark S Waterbury <
[email protected]> wrote:

> 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: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
> To subscribe, unsubscribe, or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/c400-l
> or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
> Before posting, please take a moment to review the archives
> at https://archive.midrange.com/c400-l.
>
>


-- 
Kelly Beard
-- 
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/c400-l.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.