所以我想申請特定的代碼時,模板類型boost::is_convertible
到WellKnownType
:專營仿函數時,模板類is_convertible到一個衆所周知的類型
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
,但不知道如何將其應用於模板專業化。任何幫助?
這將做。謝謝! – alesegdia