使用 template
问题:
可以使用 template在编译时传递参数而不显式指定其类型?例如,代替 template
答案:
上述方法在 C 中是不可能的。最接近的替代方法是使用宏:
<code class="cpp">#define AUTO_ARG(x) decltype(x), x f.bar<AUTO_ARG(5)>(); f.bar<AUTO_ARG(&Baz::bang)>();</code>
另一种方法是使用生成器函数来推导模板参数:
<code class="cpp">template <typename T> struct foo { foo(const T&) {} // do whatever }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
现在,而不是编写:
<code class="cpp">foo<int>(5);</code>
我们可以简单的写:
<code class="cpp">make_foo(5);</code>
这个方法会自动进行模板参数推导,提供更方便的参数传递方式。
以上是C 中可以使用“template”自动推导模板参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!