【发布时间】:2018-02-13 10:09:28
【问题描述】:
这两个非可变函数模板可以编译:
template <typename T, typename U>
typename std::enable_if<std::is_same<U, int>::value, void>::
type testFunction(T a, U b) {
std::cout << "b is integer\n";
}
template <typename T, typename U>
typename std::enable_if<std::is_same<U, float>::value, void>::
type testFunction(T a, U b) {
std::cout << "b is float\n";
}
但是,类似的可变参数模板无法编译:
template <typename T, typename... U>
typename std::enable_if<std::is_same<U, int>::value, void>::
type testFunction(T a, U... bs) {
std::cout << "bs are integers\n";
}
template <typename T, typename... U>
typename std::enable_if<std::is_same<U, float>::value, void>::
type testFunction(T a, U... bs) {
std::cout << "bs are floats\n";
}
也许我正在尝试做一些无法完成的事情。我知道使用初始化列表可以实现类似的功能,但我想避免使用初始化列表参数所需的大括号。
【问题讨论】:
标签: c++ variadic-templates enable-if