我正在尝试创建一个模板函数,它基于模板参数具有两种不同的实现。第一种是特定于I/O操作符的,第二种则适用于任何一般情况。
template <typename T>
typename std::enable_if<
std::is_same<decltype(std::setw), T>::value>::type
foo(T& t){
cout << "enabled" << std::endl;
}
template <typename T>
void foo(T& t){
cout << "Normal" << std::endl;
}
template <typename... Ts>
void foohelper(Ts... t){
foo(t...);
}
int main(){
foohelper(std::setprecision(3)); // It should print enabled, but printing Normal
}
目前它没有执行我想要实现的功能。我该如何解决?
std::cout << typeid(decltype(std::setw)).name() << std::endl; std::cout << typeid(decltype(std::setprecision)).name() << std::endl;
- bendervader