在一個類中,我有兩種不同的方法,根據調用者模板參數應該是相互排斥的。C++ 03:相互排斥的方法,由於enable_if
class Foo
{
// For collections
template<class T>
typename boost::enable_if<boost::is_same<typename std::vector<typename T::value_type>, T>::value, const T&>::type
doSomething()
{ }
// For single types
template<class T>
typename boost::enable_if<!boost::is_same<typename std::vector<typename T::value_type>, T>::value, const T&>::type
doSomething()
{ }
}
這不會編譯。
error: type/value mismatch at argument 1 in template parameter list for 'template struct boost::enable_if' error: expected a type, got '! boost::is_same::value'
也許你想'boost :: enable_if_c'?見例如[Boost enable_if參考](http://www.boost.org/doc/libs/1_64_0/libs/core/doc/html/core/enable_if.html)。 –
爲什麼不能使用'disable_if' – danielspaniol
奇怪,爲什麼在'doSomething()'之前指定'const T&',因爲返回類型應該已經由'typename boost :: enable_if ...'指定了? – Alexey