Явная реализация шаблона для функции-члена с логическим аргументом шаблона - PullRequest
1 голос
/ 10 апреля 2020

Я не уверен, как явно создать экземпляр шаблона, если аргумент шаблона - это тип bool, а не тип. Я свел мой код к этому короткому примеру. Я получаю ошибку от clang (используя -std=c++2a):

Vec.cpp:13:20: error: explicit instantiation of 'angle' does not refer to a function template, variable template, member function, member class, or static data
      member
template bool Vec::angle<false>;

Вот мой код:

Ve c .hpp:

class Vec {
public:
    template <bool degrees>
    double angle(void);
};

Ve c. cpp:

#include "Vec.hpp"
template <bool degrees>
double Vec::angle(void) {
    if constexpr (degrees) {
        // degree math
        return 360;
    } else {
        // radian math
        return 2*3.14;
    }
}

template bool Vec::angle<false>; // I don't understand what I should put here

main. cpp:

#include "Vec.hpp"
#include <iostream>

int main(void) {
    Vec v;
    std::cout << v.angle<false>() << "\n";
    return 0;
}

1 Ответ

1 голос
/ 10 апреля 2020
template double Vec::angle<false>();
template double Vec::angle<true>();

опечатка плюс вы также пропустили ().

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