为什么编译器可以推断T搭配验证码:C++模板参数推演失败
#include <vector>
template<typename T>
void foo(T& t) {}
int main(void) {
std::vector<uint8_t> vec = { 1,2,3 };
foo(vec);
return 0;
}
但没有与此代码:
#include <vector>
#include <type_traits>
template<typename T>
void foo(typename std::enable_if<true, T>::type& t) {}
int main(void) {
std::vector<uint8_t> vec = { 1,2,3 };
foo(vec);
return 0;
}
我想用第二个结构,两个模板功能之间进行选择,基于传递的类方法存在。
可能存在专门化'std :: enable_if',其中包含'using type = std :: vector '。编译器如何知道它何时只有参数类型? –