提问人:RobsBiz 提问时间:8/14/2023 最后编辑:康桓瑋RobsBiz 更新时间:8/14/2023 访问量:47
如何定义具有未命名类型名称的模板成员函数?
how to define template member function with unnamed typename?
问:
我在使用未命名的类型名定义模板成员函数时遇到了问题。
代码在下面。
#include <iostream>
#include <type_traits>
class A
{};
class B : public A
{};
class C
{
public:
template <typename T,
typename std::enable_if<std::is_base_of<A, T>::value, T>::type* = nullptr>
void do_stuff(T& t);
};
template <typename T>
void C::do_stuff(T& t)
{
}
int main(){
B b;
C c;
c.do_stuff<B>(b);
}
编译此时
/home/insights/insights.cpp:19:9: error: out-of-line definition of 'do_stuff' does not match any declaration in 'C'
void C::do_stuff(T& t)
^~~~~~~~
1 error generated.
如何实现?
答: 暂无答案
评论
template <typename T, typename std::enable_if<std::is_base_of<A, T>::value, T>::type*> void C::do_stuff(T& t) {}
.void foo(int x,int)
void foo(int x)
template <typename T> void C::do_stuff(T& t)