我们说我们有功能:
var objects: AudioSource = SingletonMusic.object.GetComponent(AudioSource);
if( objects.isPlaying )
objects.Pause();
else
objects.Play();
检查类型'种类'的最简单方法是什么?是其中一种类型'种类'在C ++中(包括C ++ 1z)?
答案 0 :(得分:9)
您可以使用以下类型特征:
template <typename...>
struct is_one_of {
static constexpr bool value = false;
};
template <typename F, typename S, typename... T>
struct is_one_of<F, S, T...> {
static constexpr bool value =
std::is_same<F, S>::value || is_one_of<F, T...>::value;
};
更新C ++ 17
使用C ++ 17模式扩展,不再需要辅助类
template <typename Kind, typename... Kinds> void foo(){
/* The following expands to :
* std::is_same_v<Kind, Kind0> || std::is_same_v<Kind, Kind1> || ... */
if constexpr ((std::is_same_v<Kind, Kinds> || ...)) {
// expected type
} else {
// not expected type
}
};