2
在我的節目我有下面的代碼:如何才能啓用嵌套類模板只爲父類variadic模板參數?
template<typename... Args>
class Outer {
template<typename Arg>
class Inner {
//some code
}
}
我怎樣才能限制Arg
是在args模板包的類型之一?
在我的節目我有下面的代碼:如何才能啓用嵌套類模板只爲父類variadic模板參數?
template<typename... Args>
class Outer {
template<typename Arg>
class Inner {
//some code
}
}
我怎樣才能限制Arg
是在args模板包的類型之一?
#include <type_traits>
template <typename T, typename... Ts>
struct contains : std::false_type {};
template <typename T, typename F, typename... Ts>
struct contains<T, F, Ts...> : contains<T, Ts...> {};
template <typename T, typename... Ts>
struct contains<T, T, Ts...> : std::true_type {};
template <typename... Args>
struct Outer
{
template <typename Arg>
struct Inner
{
static_assert(contains<Arg, Args...>::value, "Arg must be from Args");
};
};
在[這個問題](代碼http://stackoverflow.com/questions/34025327/how-can-i-make-this-variadic-template-code-shorter-using -features-from-c14-and)告訴你如何編寫一個'is_one_of'特徵。從那裏它是一個簡單的'static_assert'。 –