【发布时间】:2018-12-03 09:30:54
【问题描述】:
我正在尝试为模板类提出一个成员函数:
- 在模板类型是指针的情况下做一些事情
- 对非指针什么都不做
不确定 SFINAE 是否适用于此,因为我需要这两个版本,因为我在类本身中调用它们。请注意,我仅限于 C++11。
template < typename T_ = T, typename = std::enable_if_t <!std::is_pointer<T_>{} > >
void SomeFunction()
{
// Do nothing
}
template < typename T_ = T, typename = std::enable_if_t < std::is_pointer<T_>{} > >
void SomeFunction()
{
// Do sth
}
编译器报错 error C2535: member function already defined or declared。
【问题讨论】:
-
另一个复杂的 SFINAE 可以用 C++17 变得非常简单
if constexpr。
标签: c++ c++11 templates sfinae