を私はSFINAE先はstdインスタンス化タイプを制限するために::クロノ::持続タイプ
template <typename T>
class TemporalAlarmDelay<T, std::enable_if<std::is_base_of<std::chrono::duration< , >, T>::value, T>::type>
{
public:
explicit TemporalAlarmDelay(T delay)
: mDelay(delay)
{
}
private:
T mDelay;
std::chrono::steady_clock::time_point mTriggerTime;
};
int main(int argc, char** args)
{
TemporalAlarmDelay<std::chrono::nanoseconds> nanosecondDelay; // this should work
TemporalAlarmDelay<std::chrono::milliseconds> millisecondDelay; // this should work
TemporalAlarmDelay<std::chrono::seconds> secondDelay; // this should work
TemporalAlarmDelay<int> failDelay; // fail to instantiate
}
意図はstd::chrono::duration
の種類に制限することがある(例えばはstd::chrono::milliseconds
、std::chrono::seconds
)のような何かをしたいです。これについて最善の方法は何ですか?私の例では、std::is_base_of
を使用できると考えていましたが、ヘルパータイプ(例えばstd::chrono::milliseconds
、std::chrono::seconds
など)は継承を使用しないことを認識しました。
これは、ビットXY-問題のように聞こえます。あなたは何をしたいですか? – user0042
いいえ、私は何をしたいのかを明確に述べています。私はどのようにインスタンス化したいかの例を提供します。助けていただきありがとうございます:) – tuskcode