2017-01-25 10 views
1

チェックテンプレートパラメータは、クロノのいくつかの種類::期間

template<class T> 
struct TimeData 
{ 
    T duration; 
} 

がどのように私は Tstd::chrono::durationのいくつかの種類がある場合 static_assertはコンパイル時にチェックするために書くことができ考えるがある場合は? std::chrono::durationはテンプレートクラスであることを覚えておいてください。

つまり、タイプがテンプレートクラスのインスタンス化であるかどうかを確認するにはどうすればよいですか?

+3

ユーザー名をチェックアウト – SingerOfTheFall

答えて

7

独自のタイプ特性を実装してchrono::durationを確認することができます。このような何か:

template<class T> 
struct is_duration : std::false_type {}; 

template<class Rep, class Period> 
struct is_duration<std::chrono::duration<Rep, Period>> : std::true_type {}; 

そして、次のことができます。

static_assert(is_duration<T>::value, "must be duration"); 
関連する問題