При использовании шаблона возникает ошибка: Ошибка компилятора C2770: недопустимые явные аргументы template_or_generic для шаблона - PullRequest
1 голос
/ 07 апреля 2019

Вы можете заметить, что я изучал алгоритм Штрассена. Я использовал шаблон для типа float и int. Но есть радость ошибки шаблона: Ошибка компилятора C2784 «объявление»: не удалось вывести аргумент шаблона для «типа» из «типа» Пожалуйста, помогите мне, что случилось и как я могу это исправить

Вы можете увидеть все коды в https://github.com/hyunseoki/matrix_multiplication/blob/master/matrix_multiplication/matrix_multiplication/Strassen.h

template<typename T, size_t N>
void MatrixMult_Strassen(const T A[N][N], const T B[N][N], T C[N][N])
{   int i, j;
    const int mid = N / 2;

    if (N == 2) 
    {  
        MatrixMult_OpenMP<T, N>(A, B, C);
        return;
    }

    T A_11[mid][mid], A_12[mid][mid], A_21[mid][mid], A_22[mid][mid],
        B_11[mid][mid], B_12[mid][mid], B_21[mid][mid], B_22[mid][mid],
        C_11[mid][mid], C_12[mid][mid], C_21[mid][mid], C_22[mid][mid],
        M_1[mid][mid], M_2[mid][mid], M_3[mid][mid], M_4[mid][mid],
        M_5[mid][mid], M_6[mid][mid], M_7[mid][mid], temp_A[mid][mid], temp_B[mid][mid];

    //Matrix Division
    for (i = 0; i < mid; i++)
    {
        for (j =0; j < mid ; j++)
        {
            A_11[i][j] = A[i][j];
            A_12[i][j] = A[i][j + mid];
            A_21[i][j] = A[i + mid][j];
            A_22[i][j] = A[i + mid][j + mid];

            B_11[i][j] = B[i][j];
            B_12[i][j] = B[i][j + mid];
            B_21[i][j] = B[i + mid][j];
            B_22[i][j] = B[i + mid][j + mid];
        }
    }

    MatrixSum<T, mid>(A_11, A_22, temp_A);
    MatrixSum<T, mid>(B_11, B_22, temp_B);

    MatrixMult_Strassen<T, mid>(A_11, A_22, temp_A); // here error occurs

// below codes are ommited

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...