<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61624>61624</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
readability-make-member-function-const could detect more cases where a pointer member is read but not dereferenced
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sfc-gh-sgiesecke
</td>
</tr>
</table>
<pre>
readability-make-member-function-const doesn't suggest declaring member functions `const` which could be `const`, where a pointer member is read but not dereferenced, such as any of the following:
```
#include <memory>
struct foo {
bool hasPlain() {
return m_plain_ptr != nullptr;
}
bool hasPlainImplicitCast() {
return m_plain_ptr;
}
bool hasPlainExplicitCast() {
return static_cast<bool>(m_plain_ptr);
}
bool hasUnique() {
return m_unique_ptr != nullptr;
}
bool hasUniqueGet() {
return m_unique_ptr.get() != nullptr;
}
bool hasUniqueExplicitCast() {
return static_cast<bool>(m_unique_ptr);
}
private:
int* m_plain_ptr;
std::unique_ptr<int> m_unique_ptr;
};
```
See also https://godbolt.org/z/W8Mr6TPKq
I think the argument
> Specifically, this check will not suggest to add a const to a non-const method if the method reads a private member variable of pointer type because that allows to modify the pointee which might not preserve logical constness.
doesn't apply if the pointer is never dereferenced.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zYQ_TX0ZWBDIm3HOuiQTeJiURRYYFv0GFDkSGJDkVpy6NT99QUlf2UX7aYfhiGb5rx5M8_kGxmj6RxizTYf2OZxIRP1PtSxVcuuX8bOYET1govG62MdUGrZGGvouBzkCy4HHBoMyzY5Rca7pfIuEmiP0TF-RxBT12H-BZWVwbgOZgScERHYtphQbFvAa29UD8onq6HB2y3GH-C1x4AgYfTGEYZzKhMh1wVNInA-cwVsMaBTqDMsJtWDjCDdEXwL1CO03lr_alzHxD0rHllxnynm97zkwjhlk0Zg4mHAwYcjE0-nzekZKSRF0HoP7O7D7Q4AQOO9hV7GT1Yax_iO8eoaBqdXQErBwfA85qjnkQIwXjLxCC5ZO1Jg4gbB7h7fsLyh-DiM1ihDDzLS--nen__p93fnjyTJqGeVI8VDzpKV47tbXl79LfWNgL848yXhN5SXXtK0_0-1-4bgB_y-bFeqVXcN_w-k_4uo16q-o-oYzEESXo48gHHE-P1fHIhIOoeK-xsC8ZAh4umNGBdM5rt8_-o-Tc_PiCBt9NATjTFn53vG953Xjbe08qFjfP8H4_tfdz-F7c-ffvxyi_4I1Bv3Ml1gGbo0oCM4BYgn-DyiMq1R0tpjvvbUmwiqR_UCr8bayRrOdkQepNYgYfarvAR3sa8BqfcazOwVp1W2mJjNZ1bxbD4HGYxsLGZnOfsSHUeEBpVMEYF6SSCz3cTMM3ht2uOUeA7Hk-kNputn_xoDRgwHBOu73M5cpMMYV7dyXE1WjqM9nss9F2EiODxgeGOHq4Wuha5EJRdYl9u7al1tNmWx6OtyV4nNutE7wdWG66asilJzLNUW11Uh5cLUvOCiEJyXa1FuitWuFI2UfL2u1GbTtoKtCxyksStrD0P-LxcmxoT1ttzy9cLKBm2chgznykrXLcnoI-M8D51QZ9CySV1k68KaSPGahgxZfO_omWeHRkJFMPiAoGTE-G9mxyIFW391Ug31qVkpPzC-zwWePpZj8L-hIsb3U9OR8f3U958BAAD__5UFUEA">