Почему мне компилятор выдаёт ошибку "undefined reference to `RightGUI::vector2::vector2()'"?

Я пытаюсь скомпилировать 2 C++ файла с помощью GCC компилятора. Корневая директория проекта "RightGUI", первый файл заголовочный расположен по "RightGUI/include/vector2.hpp" пути, второй исходный файл по "RightGUI/src/vector2.cpp", а третий с функцией "main" расположен по "RightGUI/main.cpp" пути.

"RightGUI/include/vector2.hpp":

#pragma once

#ifndef RIGHTGUI_VECTOR2_HPP
#define RIGHTGUI_VECTOR2_HPP

namespace RightGUI
{
    template <typename T> class vector2
    {
      public:
        explicit vector2();

        explicit vector2(const T &x, const T &y);

        const T &X() const, &Y() const;

      private:
        T x = 0, y = 0;
    };
} // namespace RightGUI

#endif // RIGHTGUI_VECTOR2_HPP

"RightGUI/src/vector2.cpp":

#include "../include/vector2.hpp"

template <typename T> RightGUI::vector2<T>::vector2()
{
}

template <typename T> RightGUI::vector2<T>::vector2(const T &x, const T &y) : x(x), y(y)
{
}

template <typename T> const T &RightGUI::vector2<T>::X() const
{
    return x;
}

template <typename T> const T &RightGUI::vector2<T>::Y() const
{
    return y;
}

"RightGUI/main.cpp"

#include "include/vector2.hpp"

#include <cstdlib>
#include <iostream>

using namespace std;

int main(void){
    RightGUI::vector2<int> a;

    return EXIT_SUCCESS;
}

Команда компиляции: g++ -std=c++23 -Wall -Werror -Wpedantic src/vector2.cpp main.cpp

Ошибка компилятора:

/usr/bin/ld: /tmp/ccvFmbwW.o: in function `main':
main.cpp:(.text+0x10): undefined reference to `RightGUI::vector2<int>::vector2()'
collect2: error: ld returned 1 exit status

Я никак не могу понять по какой причине компилятор выдаёт постоянно такую ошибку.


Ответы (0 шт):