I'm trying to write my own `Vector2D` class and I'm running into an issue when I try to initialize the size of the `Vector2D` in the constructor.

```cpp
#include <vector>

template <typename T>
class Vector2D
{
public:
    explicit Vector2D(const size_t& rows, const size_t& columns)
        : m_data(rows, std::vector<T>{ columns })
    {}

private:
    std::vector<std::vector<T>> m_data;
};

int main()
{
    // Compiles fine
    std::vector<std::vector<float>> v1{ 10, std::vector<float>{ 10 }};

    // Results in narrowing conversion warnings!
    Vector2D<float> v2{ 10, 10 };
}

```

In the first line of `main` I can easily initialize a 2 dimensional vector and set the size of both dimensions.

In the next line, I try to do exactly the same thing through the constructor of `Vector2D` but for some reason I get warnings about narrowing conversions!

```
<source>: In instantiation of 'Vector2D<T>::Vector2D(const size_t&, const size_t&) [with T = float; size_t = long unsigned int]':
<source>:21:32:   required from here
<source>:8:49: warning: narrowing conversion of '(size_t)columns' from 'size_t' {aka 'long unsigned int'} to 'float' [-Wnarrowing]
    8 |         : m_data(rows, std::vector<T>{ columns })
      |                                                 ^
<source>:8:49: warning: narrowing conversion of 'columns' from 'const size_t' {aka 'const long unsigned int'} to 'float' [-Wnarrowing]

```

Since the `Vector2D` constructor is essentially doing exactly the same thing as the line that compiles fine why is it resulting in compiler warnings?