【发布时间】:2015-09-20 03:09:41
【问题描述】:
所以我想在模板类型boost::is_convertible 到WellKnownType 时应用特定代码:
template <typename T>
class Foo {
public:
Foo() {
// apply specific function to m_t
// if T is convertible to WellKnownType
}
T m_t;
};
为此,我考虑过使用仿函数:
template <typename T>
struct my_functor {
void operator()(T& t) {
// do nothing by default
}
};
那么,当boost::is_convertible<T, WellKnownType>:
template <>
struct my_functor<...> {
void operator()(T& t) {
// do something to t because it is convertible to WellKnownType
}
};
然后,我想我可以轻松地将Foo 的定义更改为使用函子,并在T 可转换为WellKnownType 时执行某些操作,而当它不是时则不执行任何操作:
template <typename T>
class Foo {
public:
Foo() {
my_functor<T>()(m_t);
}
T m_t;
};
我不知道如何实现这种行为。我知道BOOST_CONCEPT_REQUIRES,但不知道如何将其应用于模板专业化。有什么帮助吗?
【问题讨论】:
标签: c++ c++11 boost c++-concepts c++17