Skip to content

Commit c42a369

Browse files
committed
GCC 4.7 in experimental C++11 mode tokenises '<::' at the beginning of a template argument list or *_cast conversion incorrectly as the digraph '<:' (meaning '[') followed by a single ':'; the former can be resolved by -fpermissive, the latter isn't
1 parent fc1f692 commit c42a369

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

Release/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,9 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
163163
set(LD_FLAGS "${LD_FLAGS} -Wl,-z,defs")
164164

165165
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-strict-aliasing")
166+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
167+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
168+
endif()
166169

167170
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
168171
message("-- Setting msvc options")

Release/tests/functional/json/parsing_tests.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ TEST(escaping_control_characters)
223223

224224
for (int i : chars)
225225
{
226-
::utility::stringstream_t ss;
226+
utility::stringstream_t ss;
227227
ss << U("\"\\u") << std::uppercase << std::setfill(U('0')) << std::setw(4) << std::hex << i << U("\"");
228228
const auto &str = ss.str();
229229
auto expectedStr = str;
@@ -257,8 +257,8 @@ TEST(escaping_control_characters)
257257
}
258258

259259
// Try constructing a json string value directly.
260-
::utility::string_t schar;
261-
schar.push_back(static_cast<::utility::string_t::value_type>(i));
260+
utility::string_t schar;
261+
schar.push_back(static_cast<utility::string_t::value_type>(i));
262262
const auto &sv = json::value::string(schar);
263263
VERIFY_ARE_EQUAL(expectedStr, sv.serialize());
264264

0 commit comments

Comments
 (0)