【发布时间】:2016-06-29 11:34:29
【问题描述】:
我有如下定义的类成员函数,为其中一个提供规范,并让用户为其他人提供自己的规范:
template <typename T>
class Foo {
// specialization provided for integral types
template <typename Enable = T>
typename std::enable_if<std::is_integral<Enable>::value, size_t>::type
bar(const T& value);
// provide your own specialization for other types
template <typename Enable = T>
typename std::enable_if<!std::is_integral<Enable>::value, size_t>::type
bar(const T& value);
};
template <typename T>
template <typename Enable>
typename std::enable_if<std::is_integral<Enable>::value, size_t>::type
Foo<T>::bar(const T& value) {
...
}
现在,我想为适用于整对类型的函数提供一个特化。我有一个模板元函数检查定义如下的整数对:
template <typename T>
struct is_integral_pair : std::false_type {};
template <typename T1, typename T2>
struct is_integral_pair<std::pair<T1, T2>> {
static const bool value =
std::is_integral<T1>::value && std::is_integral<T2>::value;
};
我是否可以提供我自己的特化,使其适用于所有整数对,也许使用我上面定义的模板元函数?
【问题讨论】:
标签: c++ c++11 template-meta-programming