3

このコード:

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 コンストラクターですか?

4

1 に答える 1

11

explicitエラーメッセージは非常に明確で、宣言でのみ使用できます(定義では使用できません)。そのキーワードをスペシャライゼーションから削除するだけです。

template<>
constexpr ticks::ticks<float>(float s) : count(s * ticksPerSecond) { }
于 2013-02-25T14:21:43.773 に答える