Skip to content

Commit 2d7c5c3

Browse files
authored
Merge pull request #198 from Microsoft/mb-cppcx2
fixes in cpp-cx box topic
2 parents 1d94917 + e28d8e7 commit 2d7c5c3

File tree

3 files changed

+30
-40
lines changed

3 files changed

+30
-40
lines changed

docs/cpp-conformance-improvements-2017.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,13 @@ namespace
285285
}
286286
```
287287

288+
### Classes declared in anonymous namespaces
289+
According to the C++ standard, a class declared inside an anonymous namespace has internal linkage, and therefore cannot be exported. In Visual Studio 2015 and earlier, this rule was not enforced. In Visual Studio 2017 the rule is partially enforced. The following example raises this error in Visual Studio 2017: "error C2201: 'const `anonymous namespace'::S1::`vftable'': must have external linkage in order to be exported/imported."
290+
291+
```cpp
292+
struct __declspec(dllexport) S1 { virtual void f() {} }; //C2201
293+
```
294+
288295
### Default initializers for value class members (C++/CLI)
289296
In Visual Studio 2015 and earlier, the compiler permitted (but ignored) a default member initializer for a member of a value class. Default initialization of a value class always zero-initializes the members; a default constructor is not permitted. In Visual Studio 2017, default member initializers raise a compiler error, as shown in this example:
290297

docs/cppcx/platform-box-class.md

Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,17 @@ ref class Box abstract;
3232
**Header:** vccorlib.h
3333
3434
**Namespace:** Platform
35-
36-
## Box::Box Constructor
37-
Creates a `Box` that can encapsulate a value of the specified type.
38-
35+
|Member|Description|
36+
|------------|-----------------|
37+
|[Box Constructor](#ctor)|Creates a `Box` that can encapsulate a value of the specified type.|
38+
|[operator Box&lt;const T&gt;^](#box-const-t)|Enables boxing conversions from a `const` value class `T` or `enum` class `T` to `Box<T>`.|
39+
|[operator Box&lt;const volatile T&gt;^](#box-const-volatile-t)|Enables boxing conversions from a `const volatile` value class `T` or `enum` type `T` to `Box<T>`. |
40+
|[operator Box&lt;T&gt;^](#box-t)|Enables boxing conversions from a value class `T` to `Box<T>`.|
41+
|[operator Box&lt;volatile T&gt;^](#box-volatile-t)|Enables boxing conversions from a `volatile` value class `T` or `enum` type `T` to `Box<T>`.|
42+
|[Box::operator T](#t)|Enables boxing conversions from a value class `T` or `enum` class `T` to `Box<T>`.|
43+
## <a name="ctor"></a> Box::Box Constructor
44+
Creates a `Box` that can encapsulate a value of the specified type.|
45+
|[Value property](#value)|Returns the value that is encapsulated in the `Box` object.|
3946
### Syntax
4047
4148
```cpp
@@ -47,7 +54,7 @@ Box(T valueArg);
4754
The type of value to be boxed—for example, `int`, `bool`, `float64`, `DateTime`.
4855

4956

50-
## Box::operator Box&lt;const T&gt;^ Operator
57+
## <a name="box-const-t"></a> Box::operator Box&lt;const T&gt;^ Operator
5158
Enables boxing conversions from a `const` value class `T` or `enum` class `T` to `Box<T>`.
5259

5360
### Syntax
@@ -61,14 +68,9 @@ operator Box<const T>^(const T valueType);
6168
Any value class, value struct, or enum type. Includes the built-in types in the [default namespace](../cppcx/default-namespace.md).
6269

6370
### Return Value
64-
A `Platform::Box<T>``^` instance that represents the original value boxed in a ref class.
71+
A `Platform::Box<T>^` instance that represents the original value boxed in a ref class.
6572

66-
67-
68-
69-
70-
---
71-
## Box::operator Box&lt;const volatile T&gt;^ Operator
73+
## <a name="box-const-volatile-t"></a> Box::operator Box&lt;const volatile T&gt;^ Operator
7274
Enables boxing conversions from a `const volatile` value class `T` or `enum` type `T` to `Box<T>`.
7375

7476
### Syntax
@@ -82,14 +84,9 @@ operator Box<const volatile T>^(const volatile T valueType);
8284
Any enum type, value class, or value struct. Includes the built-in types in the [default namespace](../cppcx/default-namespace.md).
8385

8486
### Return Value
85-
A `Platform::Box<T>``^` instance that represents the original value boxed in a ref class.
87+
A `Platform::Box<T>^` instance that represents the original value boxed in a ref class.
8688

87-
88-
89-
90-
91-
---
92-
## Box::operator Box&lt;T&gt;^ Operator
89+
## <a name="box-t"></a> Box::operator Box&lt;T&gt;^ Operator
9390
Enables boxing conversions from a value class `T` to `Box<T>`.
9491

9592
### Syntax
@@ -103,14 +100,9 @@ operator Box<const T>^(const T valueType);
103100
Any enum type, value class, or value struct. Includes the built-in types in the [default namespace](../cppcx/default-namespace.md).
104101

105102
### Return Value
106-
A `Platform::Box<T>``^` instance that represents the original value boxed in a ref class.
103+
A `Platform::Box<T>^` instance that represents the original value boxed in a ref class.
107104

108-
109-
110-
111-
112-
---
113-
## Box::operator Box&lt;volatile T&gt;^ Operator
105+
## <a name="box-volatile-t"></a> Box::operator Box&lt;volatile T&gt;^ Operator
114106
Enables boxing conversions from a `volatile` value class `T` or `enum` type `T` to `Box<T>`.
115107

116108
### Syntax
@@ -124,14 +116,9 @@ operator Box<volatile T>^(volatile T valueType);
124116
Any enum type, value class, or value struct. Includes the built-in types in the [default namespace](../cppcx/default-namespace.md).
125117

126118
### Return Value
127-
A `Platform::Box<T>``^` instance that represents the original value boxed in a ref class.
119+
A `Platform::Box<T>^` instance that represents the original value boxed in a ref class.
128120

129-
130-
131-
132-
133-
---
134-
## Box::operator T Operator
121+
## <a name="t"></a> Box::operator T Operator
135122
Enables boxing conversions from a value class `T` or `enum` class `T` to `Box<T>`.
136123

137124
### Syntax
@@ -145,14 +132,10 @@ operator Box<T>^(T valueType);
145132
Any enum type, value class, or value struct. Includes the built-in types in the [default namespace](../cppcx/default-namespace.md).
146133

147134
### Return Value
148-
A `Platform::Box<T>``^` instance that represents the original value boxed in a ref class.
135+
A `Platform::Box<T>^` instance that represents the original value boxed in a ref class.
149136

150137

151-
152-
153-
154-
---
155-
## Box::Value Property
138+
## <a name="value"></a> Box::Value Property
156139
Returns the value that is encapsulated in the `Box` object.
157140

158141
### Syntax

docs/cppcx/platform-string-class.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public ref class String sealed : Object,
7373
7474
**Properties**
7575
76-
The String class has the following properties.
76+
The String class has the following operators.
7777
7878
|Member|Description|
7979
|------------|-----------------|

0 commit comments

Comments
 (0)