在具有模板成员功能的模板类方面遇到麻烦
Having trouble with template classes having template member functions
在我对模板的实验中,我遇到了令人困惑的困境。我正在定义一个默认参数为 int
的模板结构F
。它具有模板成员函数g
。我将其定义在结构定义下。我认为这是正确的方法,但是,我收到一个错误。只有一个错误:
prog.cpp:9:62:错误:类模板参数的默认参数,用于封闭'void f<> :: g()'
template <typename = int> struct F {
template <typename> void g();
};
template <typename T = int> template <typename> void F<T>::g() {}
int main() {
F<>f;
}
这很模糊。我无法完全理解它的含义。所以我尝试改变一些事情。我认为这是F
定义的默认模板参数。所以我更改了:
template <typename = int> struct F {
to
template <typename T = int> struct F {
我还尝试给出g
模板参数:
template <typename T = int> template <typename U> void F<T>::g<U>() {}
,但后来我收到了错误:
prog.cpp:9:67:错误:功能模板部分专业化'g'不允许
prog.cpp:9:67:错误:类模板参数的默认参数,用于包含'void f :: g()'
我什至尝试指定g
是一个模板函数:
template <typename T = int> template <typename U> void F<T>::template g<U>() {}
,但这无济于事。我在做什么错?
默认模板参数必须仅在函数声明上使用,而不是在定义上:
template <typename T/* = int*/> template <typename> void F<T>::g() {}
相关文章:
- GCC和Clang在与__builtin_constant_p相关的static_assert方面有所不同
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 查找奇数平方和时遇到麻烦
- 为什么我的代码在指针方面停止运行?
- 你如何使std::变体的使用更"palatable",语法方面?
- 我需要 c++ 结构方面的帮助
- 我需要 c++ 结构方面的帮助
- 将双倍转换为 LPARAM 的麻烦
- 麻烦得到提升::记录器编译
- 为什么我在虚幻引擎中的多态性和接口方面遇到问题?
- 为什么酷睿i5-6600在非方阵乘法方面比酷睿i9-9960X更快?
- 翻转 ppm 图像C++麻烦
- 尝试使用 indexOf 创建一个 if 语句来检查字符串是否包含字符.有一点麻烦
- 搬家turtlebot_gazebo麻烦
- printf() 和 std::cout 在指针方面的区别
- Boost.Python 在静态库方面失败
- C 中的指针和功能方面的麻烦
- 在客户端/服务器计算器C 方面遇到麻烦
- 在具有模板成员功能的模板类方面遇到麻烦
- 视觉我在C++的继承和多态性方面遇到了麻烦