sizeof
operator with stl containers CXX-W2054The check finds usages of sizeof
on expressions of STL container types. Most likely the user wanted to use .size()
instead.
All class/struct types declared in the namespace std::
having a const size()
method are considered containers, with the exception of std::bitset
and std::array
.
std::string s;
int a = 47 + sizeof(s); // warning: sizeof() doesn't return the size of the container. Did you mean .size()?
std::string s;
int a = 47 + s.size();
std::string array_of_strings[10];
int c = sizeof(array_of_strings) / sizeof(array_of_strings[0]); // no warning, definitely intended.
std::array<int, 3> std_array;
int d = sizeof(std_array); // no warning, probably intended.