gpt4 book ai didi

c++ - 模板方法的模板特化

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:03 26 4
gpt4 key购买 nike

好的,我有:

template<typename T>
class Reader
{
class Input
{
template<typename C>
void operator()(C& val) const
{
/* Do Some Work */
}
};
};

不幸的是,“Do Some Work”的通用版本对我不起作用。它也不容易修改,因为它位于一些繁重的模板元编程代码的中间。

所以我虽然可以针对我的类型专门化该方法。所以我的第一步是尝试将通用方法从类中拉出来。

template<typename T>
class Reader
{
class Input
{
template<typename C>
void operator()(C& val) const;
};
};


template<typename T>
template<typename C>
void typename Reader<T>::Input template operator()<C>(C& val) const // LINE 13
{
/* Do Some Work */
}

不幸的是我得到了错误:

s.h:13: error: error: expected ‘)’ before ‘&’ token

最佳答案

正常写就可以了

template<typename T>
template<typename C>
void Reader<T>::Input::operator()(C& val) const // LINE 13
{
/* Do Some Work */
}

不过,在类外定义通用版本并不能帮助您提供它的特殊版本,否则我确实没有达到您的目标。

关于c++ - 模板方法的模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6527929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com