Quantcast

Poll: C++11 compiler support

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Poll: C++11 compiler support

Sam Varshavchik
The forward match of progress is requiring a clean break from the pre-c++11  
days. Under consideration is migrating the courier-unicode library, used by  
both Courier and Cone, to use C++11's unicode support only.

I am taking a poll whether there's still any notable platforms where Courier  
and Cone is used that's still using an old compiler that does not support  
C++11.

According to gcc's documentation, gcc 4.8.1 was the first version with full  
C++11 support; but it's likely that older versions of gcc had sufficient  
support. gcc 4.5's compliance page gives Unicode string literals as  
supported, so I'm fairly confident of sufficient C++11 unicode support at  
least in gcc 4.5, at the latest.

I'd like to know if your compiler does not support C++11 unicode strings.  
This can be determined with a simple test:

#include <string>

int main()
{
    char32_t c=0;
    std::u32string u;

    return 0;
}

Save the above as "utest.C", then execute either:

g++ -o utest utest.C

or

g++ -std=c++11 -o utest utest.C

If either one completes without errors, you're good. This is if your  
compiler is "g++", of course. Certain platforms, like Debian, FreeBSD, and  
many others, might have multiple versions of gcc installed; typically as  
"g++NN". Use the appropriate command for your gcc.



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Szépe Viktor
Idézem/Quoting Sam Varshavchik <[hidden email]>:

> The forward match of progress is requiring a clean break from the  
> pre-c++11 days. Under consideration is migrating the courier-unicode  
> library, used by both Courier and Cone, to use C++11's unicode  
> support only.
>
> I am taking a poll whether there's still any notable platforms where  
> Courier and Cone is used that's still using an old compiler that  
> does not support C++11.
>
> According to gcc's documentation, gcc 4.8.1 was the first version  
> with full C++11 support; but it's likely that older versions of gcc  
> had sufficient support. gcc 4.5's compliance page gives Unicode  
> string literals as supported, so I'm fairly confident of sufficient  
> C++11 unicode support at least in gcc 4.5, at the latest.
>
> I'd like to know if your compiler does not support C++11 unicode  
> strings. This can be determined with a simple test:
>
> #include <string>
>
> int main()
> {
>    char32_t c=0;
>    std::u32string u;
>
>    return 0;
> }
>
> Save the above as "utest.C", then execute either:
>
> g++ -o utest utest.C
>
> or
>
> g++ -std=c++11 -o utest utest.C
>
> If either one completes without errors, you're good. This is if your  
> compiler is "g++", of course. Certain platforms, like Debian,  
> FreeBSD, and many others, might have multiple versions of gcc  
> installed; typically as "g++NN". Use the appropriate command for  
> your gcc.

This is the case in Debian releases:
squeeze with gcc-4.4

$ g++ -o utest u.c
u.c: In function ‘int main()’:
u.c:5: error: ‘char32_t’ was not declared in this scope
u.c:5: error: expected ‘;’ before ‘c’
u.c:6: error: ‘u32string’ is not a member of ‘std’
u.c:6: error: expected ‘;’ before ‘u’

$ g++ -std=c++11 -o utest u.c
cc1plus: error: unrecognized command line option "-std=c++11"

wheezy with gcc-4.7

$ g++ -o utest u.c
u.c: In function ‘int main()’:
u.c:5:4: error: ‘char32_t’ was not declared in this scope
u.c:5:13: error: expected ‘;’ before ‘c’
u.c:6:4: error: ‘u32string’ is not a member of ‘std’
u.c:6:19: error: expected ‘;’ before ‘u’

$ g++ -std=c++11 -o utest u.c
(no output)

jessie with gcc-4.9

$ g++ -o utest u.c
u.c: In function ‘int main()’:
u.c:5:4: error: ‘char32_t’ was not declared in this scope
     char32_t c=0;
     ^
u.c:6:4: error: ‘u32string’ is not a member of ‘std’
     std::u32string u;
     ^
$ g++ -std=c++11 -o utest u.c
(no output)



SZÉPE Viktor
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
+36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület





------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Sam Varshavchik
SZÉPE Viktor writes:

> This is the case in Debian releases:
> squeeze with gcc-4.4
>
> $ g++ -o utest u.c
> u.c: In function ‘int main()’:
> u.c:5: error: ‘char32_t’ was not declared in this scope
> u.c:5: error: expected ‘;’ before ‘c’
> u.c:6: error: ‘u32string’ is not a member of ‘std’
> u.c:6: error: expected ‘;’ before ‘u’
>
> $ g++ -std=c++11 -o utest u.c
> cc1plus: error: unrecognized command line option "-std=c++11"
Ok, so gcc 4.4 is not going to work.

According to https://wiki.debian.org/LTS, squeeze has EOLed a year ago.

> wheezy with gcc-4.7
>
> $ g++ -o utest u.c
> u.c: In function ‘int main()’:
> u.c:5:4: error: ‘char32_t’ was not declared in this scope
> u.c:5:13: error: expected ‘;’ before ‘c’
> u.c:6:4: error: ‘u32string’ is not a member of ‘std’
> u.c:6:19: error: expected ‘;’ before ‘u’
>
> $ g++ -std=c++11 -o utest u.c
> (no output)
Ok, so with wheezy, and going forward, you should be ok by explicitly using  
the -std=c++11 compiler flag.

CentOS 5 also comes with gcc 4.4, and CentOS 5 EOLs and the end of this  
month. But looks like CentOS 6 still uses gcc 4.4, until 2020. That's likely  
to be problematic, but I'd still like to verify this. It's remotely possible  
that Red Hat patched in some C++11 support in their build of gcc 4.4.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Freddie Witherden
Hi,

On 05/03/2017 13:03, Sam Varshavchik wrote:

>> $ g++ -o utest u.c
>> u.c: In function ‘int main()’:
>> u.c:5: error: ‘char32_t’ was not declared in this scope
>> u.c:5: error: expected ‘;’ before ‘c’
>> u.c:6: error: ‘u32string’ is not a member of ‘std’
>> u.c:6: error: expected ‘;’ before ‘u’
>>
>> $ g++ -std=c++11 -o utest u.c
>> cc1plus: error: unrecognized command line option "-std=c++11"
>
> Ok, so gcc 4.4 is not going to work.
>
> According to https://wiki.debian.org/LTS, squeeze has EOLed a year ago.
>
>> wheezy with gcc-4.7
>>
>> $ g++ -o utest u.c
>> u.c: In function ‘int main()’:
>> u.c:5:4: error: ‘char32_t’ was not declared in this scope
>> u.c:5:13: error: expected ‘;’ before ‘c’
>> u.c:6:4: error: ‘u32string’ is not a member of ‘std’
>> u.c:6:19: error: expected ‘;’ before ‘u’
>>
>> $ g++ -std=c++11 -o utest u.c
>> (no output)
>
> Ok, so with wheezy, and going forward, you should be ok by explicitly
> using the -std=c++11 compiler flag.
>
> CentOS 5 also comes with gcc 4.4, and CentOS 5 EOLs and the end of this
> month. But looks like CentOS 6 still uses gcc 4.4, until 2020. That's
> likely to be problematic, but I'd still like to verify this. It's
> remotely possible that Red Hat patched in some C++11 support in their
> build of gcc 4.4.
You can try with -std=c++0x which enables limited support and has been
available since early 4.x releases.

Regards, Freddie.

>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
>
>
>
> _______________________________________________
> courier-users mailing list
> [hidden email]
> Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
>


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

signature.asc (858 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Szépe Viktor
Idézem/Quoting Freddie Witherden <[hidden email]>:

> Hi,
>
> On 05/03/2017 13:03, Sam Varshavchik wrote:
>>> $ g++ -o utest u.c
>>> u.c: In function ‘int main()’:
>>> u.c:5: error: ‘char32_t’ was not declared in this scope
>>> u.c:5: error: expected ‘;’ before ‘c’
>>> u.c:6: error: ‘u32string’ is not a member of ‘std’
>>> u.c:6: error: expected ‘;’ before ‘u’
>>>
>>> $ g++ -std=c++11 -o utest u.c
>>> cc1plus: error: unrecognized command line option "-std=c++11"
>>
>> Ok, so gcc 4.4 is not going to work.
>>
>> According to https://wiki.debian.org/LTS, squeeze has EOLed a year ago.
>>
>>> wheezy with gcc-4.7
>>>
>>> $ g++ -o utest u.c
>>> u.c: In function ‘int main()’:
>>> u.c:5:4: error: ‘char32_t’ was not declared in this scope
>>> u.c:5:13: error: expected ‘;’ before ‘c’
>>> u.c:6:4: error: ‘u32string’ is not a member of ‘std’
>>> u.c:6:19: error: expected ‘;’ before ‘u’
>>>
>>> $ g++ -std=c++11 -o utest u.c
>>> (no output)
>>
>> Ok, so with wheezy, and going forward, you should be ok by explicitly
>> using the -std=c++11 compiler flag.
>>
>> CentOS 5 also comes with gcc 4.4, and CentOS 5 EOLs and the end of this
>> month. But looks like CentOS 6 still uses gcc 4.4, until 2020. That's
>> likely to be problematic, but I'd still like to verify this. It's
>> remotely possible that Red Hat patched in some C++11 support in their
>> build of gcc 4.4.
>
> You can try with -std=c++0x which enables limited support and has been
> available since early 4.x releases.
>

Works on g++ 4.4:

$ g++ -std=c++0x -o utest u.c
(no output)



SZÉPE Viktor
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
+36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület





------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Sam Varshavchik
SZÉPE Viktor writes:

> Idézem/Quoting Freddie Witherden <[hidden email]>:
>
> > Hi,
> >
> > On 05/03/2017 13:03, Sam Varshavchik wrote:
> >>> $ g++ -o utest u.c
> >>> u.c: In function ‘int main()’:
> >>> u.c:5: error: ‘char32_t’ was not declared in this scope
> >>> u.c:5: error: expected ‘;’ before ‘c’
> >>> u.c:6: error: ‘u32string’ is not a member of ‘std’
> >>> u.c:6: error: expected ‘;’ before ‘u’
> >>>
> >>> $ g++ -std=c++11 -o utest u.c
> >>> cc1plus: error: unrecognized command line option "-std=c++11"
> >>
> >> Ok, so gcc 4.4 is not going to work.
> >>
> >> According to https://wiki.debian.org/LTS, squeeze has EOLed a year ago.
> >>
> >>> wheezy with gcc-4.7
> >>>
> >>> $ g++ -o utest u.c
> >>> u.c: In function ‘int main()’:
> >>> u.c:5:4: error: ‘char32_t’ was not declared in this scope
> >>> u.c:5:13: error: expected ‘;’ before ‘c’
> >>> u.c:6:4: error: ‘u32string’ is not a member of ‘std’
> >>> u.c:6:19: error: expected ‘;’ before ‘u’
> >>>
> >>> $ g++ -std=c++11 -o utest u.c
> >>> (no output)
> >>
> >> Ok, so with wheezy, and going forward, you should be ok by explicitly
> >> using the -std=c++11 compiler flag.
> >>
> >> CentOS 5 also comes with gcc 4.4, and CentOS 5 EOLs and the end of this
> >> month. But looks like CentOS 6 still uses gcc 4.4, until 2020. That's
> >> likely to be problematic, but I'd still like to verify this. It's
> >> remotely possible that Red Hat patched in some C++11 support in their
> >> build of gcc 4.4.
> >
> > You can try with -std=c++0x which enables limited support and has been
> > available since early 4.x releases.
> >
>
> Works on g++ 4.4:
>
> $ g++ -std=c++0x -o utest u.c
> (no output)
Ok, so squeeze should be taken care of, and most likely CentOS 5 and 6.  
Thanks for testing it.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [cone] Poll: C++11 compiler support

Sam Varshavchik
In reply to this post by Sam Varshavchik
Nux! writes:

> Hello,
>
> Got errors with both commands:
> CentOS 6 x86_64, gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
>
> This could have some impact as CentOS 6 is still pretty used in the server  
> world.
>
> g++ -o utest utest.C
> utest.C: In function ‘int main()’:
> utest.C:5: error: ‘char32_t’ was not declared in this scope
> utest.C:5: error: expected ‘;’ before ‘c’
> utest.C:6: error: ‘u32string’ is not a member of ‘std’
> utest.C:6: error: expected ‘;’ before ‘u’
>
> g++ -std=c++11 -o utest utest.C
> cc1plus: error: unrecognized command line option "-std=c++11"
Ok, now try:

g++ -std=c++0x -o utest utest.C



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Bowie Bailey
In reply to this post by Sam Varshavchik
On 3/5/2017 5:10 PM, Sam Varshavchik wrote:
>
> Ok, so squeeze should be taken care of, and most likely CentOS 5 and
> 6. Thanks for testing it.

CentOS 6 is using gcc 4.4.7 and works fine with the '-std=c++0x' flag.

CentOS 5 is using gcc 4.1.2 and does not work.

$ g++ -std=c++0x -o utest utest.C
cc1plus: error: unrecognized command line option "-std=c++0x"

--
Bowie

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Poll: C++11 compiler support

Sam Varshavchik
Bowie Bailey writes:

> On 3/5/2017 5:10 PM, Sam Varshavchik wrote:
> >
> > Ok, so squeeze should be taken care of, and most likely CentOS 5 and
> > 6. Thanks for testing it.
>
> CentOS 6 is using gcc 4.4.7 and works fine with the '-std=c++0x' flag.
>
> CentOS 5 is using gcc 4.1.2 and does not work.
>
> $ g++ -std=c++0x -o utest utest.C
> cc1plus: error: unrecognized command line option "-std=c++0x"
I see a separate gcc44 package for CentOS 5, here:

http://mirror.centos.org/centos/5.11/os/x86_64/CentOS/

Even though CentOS 5 is now EOLed, It looks to me it will still be possible  
to build C++11 code using the gcc44 package.



------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment
Loading...