Skip to content

Commit 3cdd3c8

Browse files
authored
Merge pull request Tencent#1817 from lukedan/lukedan_cpp20
Fix Tencent#1721
2 parents 56f215e + 5e50f27 commit 3cdd3c8

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

include/rapidjson/document.h

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2003,17 +2003,18 @@ class GenericValue {
20032003

20042004
// Initial flags of different types.
20052005
kNullFlag = kNullType,
2006-
kTrueFlag = kTrueType | kBoolFlag,
2007-
kFalseFlag = kFalseType | kBoolFlag,
2008-
kNumberIntFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag,
2009-
kNumberUintFlag = kNumberType | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag,
2010-
kNumberInt64Flag = kNumberType | kNumberFlag | kInt64Flag,
2011-
kNumberUint64Flag = kNumberType | kNumberFlag | kUint64Flag,
2012-
kNumberDoubleFlag = kNumberType | kNumberFlag | kDoubleFlag,
2013-
kNumberAnyFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag,
2014-
kConstStringFlag = kStringType | kStringFlag,
2015-
kCopyStringFlag = kStringType | kStringFlag | kCopyFlag,
2016-
kShortStringFlag = kStringType | kStringFlag | kCopyFlag | kInlineStrFlag,
2006+
// These casts are added to suppress the warning on MSVC about bitwise operations between enums of different types.
2007+
kTrueFlag = static_cast<int>(kTrueType) | static_cast<int>(kBoolFlag),
2008+
kFalseFlag = static_cast<int>(kFalseType) | static_cast<int>(kBoolFlag),
2009+
kNumberIntFlag = static_cast<int>(kNumberType) | static_cast<int>(kNumberFlag | kIntFlag | kInt64Flag),
2010+
kNumberUintFlag = static_cast<int>(kNumberType) | static_cast<int>(kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag),
2011+
kNumberInt64Flag = static_cast<int>(kNumberType) | static_cast<int>(kNumberFlag | kInt64Flag),
2012+
kNumberUint64Flag = static_cast<int>(kNumberType) | static_cast<int>(kNumberFlag | kUint64Flag),
2013+
kNumberDoubleFlag = static_cast<int>(kNumberType) | static_cast<int>(kNumberFlag | kDoubleFlag),
2014+
kNumberAnyFlag = static_cast<int>(kNumberType) | static_cast<int>(kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag),
2015+
kConstStringFlag = static_cast<int>(kStringType) | static_cast<int>(kStringFlag),
2016+
kCopyStringFlag = static_cast<int>(kStringType) | static_cast<int>(kStringFlag | kCopyFlag),
2017+
kShortStringFlag = static_cast<int>(kStringType) | static_cast<int>(kStringFlag | kCopyFlag | kInlineStrFlag),
20172018
kObjectFlag = kObjectType,
20182019
kArrayFlag = kArrayType,
20192020

test/unittest/schematest.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2038,8 +2038,13 @@ TEST(SchemaValidator, Ref_remote_issue1210) {
20382038
class SchemaDocumentProvider : public IRemoteSchemaDocumentProvider {
20392039
SchemaDocument** collection;
20402040

2041-
SchemaDocumentProvider(const SchemaDocumentProvider&);
2042-
SchemaDocumentProvider& operator=(const SchemaDocumentProvider&);
2041+
// Dummy private copy constructor & assignment operator.
2042+
// Function bodies added so that they compile in MSVC 2019.
2043+
SchemaDocumentProvider(const SchemaDocumentProvider&) : collection(NULL) {
2044+
}
2045+
SchemaDocumentProvider& operator=(const SchemaDocumentProvider&) {
2046+
return *this;
2047+
}
20432048

20442049
public:
20452050
SchemaDocumentProvider(SchemaDocument** collection) : collection(collection) { }

0 commit comments

Comments
 (0)