Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion docs/code-quality/c26460.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,34 @@ ms.date: 03/22/2018
ms.topic: reference
f1_keywords: ["C26460"]
helpviewer_keywords: ["C26460"]
description: CppCoreCheck rule that enforces C++ Core Guidelines Con.3
---
# C26460 USE_CONST_REFERENCE_ARGUMENTS
The reference argument '%argument%' for function '%function%' can be marked as `const` (con.3).

The reference argument '%argument%' for function '%function%' can be marked as `const`. See [C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).
Passing an object by reference indicates that the function has the potential modify the object. If that is not the intent of the function, it is better to mark the argument as a const reference.

## See also
[C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).

## Example
```cpp
struct MyStruct
{
void MemberFn1() const;
void MemberFn2();
};


void Function1_Helper(const MyStruct&);
void Function1(MyStruct& myStruct) // C26460, see comments below.
{
myStruct.MemberFn1(); // The member function is marked as const
Function1_Helper(myStruct); // Function1_Helper takes a const reference
}

void Function2(MyStruct& myStruct)
{
myStruct.MemberFn2(); // MemberFn2 is non-const and has the potential to modify data
}
```
35 changes: 34 additions & 1 deletion docs/code-quality/c26461.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,40 @@ ms.date: 03/22/2018
ms.topic: reference
f1_keywords: ["C26461"]
helpviewer_keywords: ["C26461"]
description: CppCoreCheck rule that enforces C++ Core Guidelines con.3
---
# C26461 USE_CONST_POINTER_ARGUMENTS:

The pointer argument '%argument%' for function '%function%' can be marked as a pointer to `const`. See [C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).
The pointer argument '%argument%' for function '%function%' can be marked as a pointer to `const` (con.3).

A function with a `T*` argument has the potential to modify the value of the object. If that is not the intent of the function, it is better to make the pointer a `const T*` instead.

## See also
[C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).

## Example
```cpp
struct MyStruct
{
void MemberFn1() const;
void MemberFn2();
};

void Function1_Helper(const MyStruct* myStruct);
void Function1(MyStruct* myStruct) // C26461, neither of the operations on myStruct would modify the pointer's value.
{
if (!myStruct)
return;

myStruct->MemberFn1(); // The member function is const
Function1_Helper(myStruct); // Function1_Helper takes a const
}

void Function2(MyStruct* myStruct)
{
if (!myStruct)
return;

myStruct->MemberFn2(); // The member function is non-const, so no C26461 will be issued
}
```