Этого код:специализированные конструкторы шаблона не видели, как конструкторы
constexpr uint32_t ticksPerSecond = 100000;
struct ticks {
uint32_t count;
template<typename integer>
constexpr explicit ticks(integer c) : count(c) { }
explicit inline operator float() {
return count/(float) ticksPerSecond;
}
};
template<>
constexpr explicit ticks::ticks<float>(float s) : count(s * ticksPerSecond) { }
дает мне ошибку:
timer.hpp:(last line of snippet):
error: only declarations of constructors can be 'explicit'
Конечно ticks::ticks
является конструктора?
Возможно, вам следует удалить ключевое слово 'constexpr'? – Axel
После того, как вы решите свою проблему и ее компилируете, подумайте об изменении кода. Специализация шаблонов функций обычно не является лучшей идеей. Вы должны предпочесть не templated перегрузку. –
@ DavidRodríguez-dribeas: Вы говорите, что я могу просто объявить не шаблонную версию конструктора, и это займет приоритет над версией шаблона? – Eric