LeetCode 149: Max Points on a Line
Code Review

Prefer int to const inline int. See Previous review.

Prefer to pass by const reference

Prefer to put the &amp; next to the type (not the parameter).
Its part of the type information (note this is the opposite of C).
  static const inline int maxPoints(const std::vector&lt;std::vector&lt;int&gt;&gt; &amp;points)




This is absolutely fine (I have not problems with it).
        int max_points = 0;

But most (I have no real metrics for this, but in my experience) tend to use &quot;CamelCase&quot; rather than &quot;Snake_Case&quot; naming convention.

Prefer to use pre-increment rather than post increment
        for (int index_i = 0; index_i &lt; points.size(); index_i++) {

The reason is that C++ code can simply be changed by changing the type used. Now pre/post fix increment on an integer has exactly the same type. But if we change the type used for the iterator then pre/post increment can be slightly different in cost. The standard implementation of iterators (the most common thing used in loops) will give you a slightly more expensive operation (in theory) than a pre-increment. Thus the standard advice is to always use the pre-increment to make sure you always use the most efficient operation.

Be aware of the new range based operator.
Not sure it totally helps here. But keep in mind the range based operator:
        for (int index_i = 0; index_i &lt; points.size(); index_i++) {
            auto&amp; item = points[index_i];

            // STUFF
        }

        // can be simplified to:
        for (auto&amp; item: points) {

            // STUFF
        }


Your assuming that using namespace std; is somewhere above you.
            map&lt;pair&lt;int, int&gt;, int&gt; points_map;

Don't. Even using using namespace std; is considered bad pactice.

Not very common to see the use of not. It is much more common to use !.
        if (not b) {

        ----

        if (!b) {

For most C developers this will be the normal.