相关疑难解决方法(0)

模板参数默认为较晚的参数

这个链接没有回答我的问题所以我会在这里问:

基本上我想写一个模板函数

template <typename Out, typename In>
Out f(In x);
Run Code Online (Sandbox Code Playgroud)

在这里,我总是需要Out在调用时指定f.我不想每次都这样做,所以我基本上都想要

template <typename Out = In, typename In>
Out f(In x);
Run Code Online (Sandbox Code Playgroud)

这意味着如果我没有指定Out,它将默认为In.但是,这在C++ 11中是不可能的.

所以我的问题是,有没有办法达到这个效果:

  1. 调用f(t)将实例化f<T,T>(t)或更普遍f<typename SomeThing<T>::type, T>
  2. 调用f<U>(t)将实例化f<U, T>(t)

c++ templates function-templates default-arguments c++11

5
推荐指数
2
解决办法
319
查看次数