This is a live mirror of the Perl 5 development currently hosted at
Devel-PPPort: Rmv impediment to compiling under C++11
authorKarl Williamson <>
Sat, 19 Nov 2016 12:57:46 +0000 (05:57 -0700)
committerKarl Williamson <>
Sun, 14 Jan 2018 18:48:22 +0000 (11:48 -0700)
C++11 changed from earlier versions to require space between the end of
a string literal and a macro, so that a feature can unambiguously be
added to the language.  Starting in g++ 6.2, the compiler emits a
deprecation warning when there isn't a space (presumably so that future
versions can support C++11).

Although not required by the C++11 change, this patch also makes sure
there is space after a macro call, before a string literal.

Code and modules included with the Perl core need to be compilable using
C++.  This is so that perl can be embedded in C++ programs. (Actually,
only the hdr files need to be so compilable, but it would be hard to
test that just the hdrs are compilable.)  So we need to accommodate
changes to the C++ language.


index 2b008e1..36ee57f 100644 (file)
@@ -626,7 +626,7 @@ SVf(x)
         SV *x
 #if { VERSION >= 5.004 }
-                x = sv_2mortal(newSVpvf("[%"SVf"]", SVfARG(x)));
+                x = sv_2mortal(newSVpvf("[%" SVf "]", SVfARG(x)));