当使用高版本的cuda去安装低版本pytorch,并且编译用低版本pytorch写的cuda算子时,或者说是VS的版本过高如2022和2019,都有可能会出现某个.h文件或者.c文件报错,如:
error: too few arguments for template template parameter "Tuple" detected during instantiation of class "pybind11::detail::tuple_caster
修改报错对应行的表达式,像我这里报错的是torch里的cast.h的文件,网络上关于这个cast.h的错误好像就是最多的,就去conda envs里的
torch/include/pybind11/cast.h
在报错的前面加上下面的代码进行修改,提前定义这个tuple_caster
- template <template <typename...> class Tuple, typename... Ts>
- class tuple_caster;
-
- template <typename T1, typename T2> class type_caster<std::pair<T1, T2>>
- : public tuple_caster<std::pair, T1, T2> {};
-
- template <typename... Ts> class type_caster<std::tuple<Ts...>>
- : public tuple_caster<std::tuple, Ts...> {};