Компилятор не выбирает специализацию функции шаблона [закрыто] ⇐ C++
-
Гость
Компилятор не выбирает специализацию функции шаблона [закрыто]
У меня есть следующая функция шаблона и ее специализация:
шаблон встроенная трассировка BaseField (const ExtField& f) { static_assert(false, «Не реализовано!»); вернуть BaseField::additive_identity(); } шаблон встроенная трассировка F_3(const F_9& f) { вернуть f.trace_to_F3(); } Я пытаюсь создать экземпляр функции trace следующим образом:
F_9 a(F_3::ноль, F_3::один); F_3 t = трассировка(а); Я получаю следующую ошибку компиляции:
В файле, включенном из /hdd/home_dir/aakash/exp/trace_cpp/src/fields.cpp:1: /hdd/home_dir/aakash/exp/trace_cpp/include/fields.h: В функции «BaseField Trace(const ExtField&)»: /hdd/home_dir/aakash/exp/trace_cpp/include/fields.h:237:19: ошибка: ошибка статического утверждения: не реализовано! 237 | static_assert(false, «Не реализовано!»); Почему используется неспециализированная версия, если необходимая специализация существует? И шаблон функции, и ее специализация находятся в одном заголовочном файле и видны компилятору во время компиляции.
У меня есть следующая функция шаблона и ее специализация:
шаблон встроенная трассировка BaseField (const ExtField& f) { static_assert(false, «Не реализовано!»); вернуть BaseField::additive_identity(); } шаблон встроенная трассировка F_3(const F_9& f) { вернуть f.trace_to_F3(); } Я пытаюсь создать экземпляр функции trace следующим образом:
F_9 a(F_3::ноль, F_3::один); F_3 t = трассировка(а); Я получаю следующую ошибку компиляции:
В файле, включенном из /hdd/home_dir/aakash/exp/trace_cpp/src/fields.cpp:1: /hdd/home_dir/aakash/exp/trace_cpp/include/fields.h: В функции «BaseField Trace(const ExtField&)»: /hdd/home_dir/aakash/exp/trace_cpp/include/fields.h:237:19: ошибка: ошибка статического утверждения: не реализовано! 237 | static_assert(false, «Не реализовано!»); Почему используется неспециализированная версия, если необходимая специализация существует? И шаблон функции, и ее специализация находятся в одном заголовочном файле и видны компилятору во время компиляции.
Мобильная версия