/home/wuyan/test/parse_threads.h:760: note: couldn't deduce template parameter 'S' compare_value(); ~~~~~~~~~~~~~^~
时间: 2023-06-30 11:26:37 浏览: 85
这个错误提示表明编译器无法推断出模板参数S的类型,需要手动指定模板参数S的类型。这通常是因为函数模板的参数列表中同时包含了模板参数和普通参数,导致编译器无法推断模板参数的类型。
在这种情况下,可以手动指定模板参数S的类型。例如,假设我们有一个函数模板如下:
```cpp
template<typename T, typename S>
void myFunction(T t, S s)
{
// ...
}
```
如果编译器无法推断出模板参数S的类型,我们可以手动指定S的类型,例如:
```cpp
int i = 42;
myFunction<double, int>(3.14, i);
```
在上面的例子中,我们手动指定了模板参数T的类型为double,模板参数S的类型为int。
同样的,如果您在模板类方法中使用了模板参数和普通参数,而编译器无法推断出模板参数的类型,可以手动指定模板参数的类型。例如,假设我们有一个模板类和一个模板类方法,如下所示:
```cpp
template<typename T>
class MyClass
{
public:
template<typename S>
void myMethod(T t, S s)
{
// ...
}
};
```
如果编译器无法推断出模板参数S的类型,我们可以手动指定S的类型,例如:
```cpp
MyClass<double> myObj;
int i = 42;
myObj.myMethod<int>(3.14, i);
```
在上面的例子中,我们手动指定了模板参数T的类型为double,模板参数S的类型为int。
阅读全文