首页 > 后端开发 > C++ > 正文

自动类型推断可以模拟 C 中的模板继承吗?

Susan Sarandon
发布: 2024-11-05 10:07:02
原创
253 人浏览过

Can Automatic Type Inference Emulate Template Inheritance in C  ?

通过自动类型推断模拟模板继承

使用 auto 自动指定模板参数的能力将在显式键入的情况下提供方便的快捷方式完整的类型可能是乏味或复杂的。然而,需要注意的是,C 目前不支持 template 的直接模拟。

使用宏方便的参数传递

作为一种解决方法,可以利用宏来模拟自动类型推断。考虑以下示例:

<code class="cpp">#define AUTO_ARG(x) decltype(x), x

Foo f;
f.bar<AUTO_ARG(5)>(); // Equivalent to f.bar<int, 5>()
f.bar<AUTO_ARG(&Baz::bang)>(); // Equivalent to f.bar<decltype(&Baz::bang), &Baz::bang>()</code>
登录后复制

虽然这种方法可以简化调用语法,但它引入了潜在的陷阱并且需要显式宏调用。

利用模板生成器进行自动推导

另一种解决方案涉及创建模板生成器函数:

<code class="cpp">template <typename T>
struct foo
{
    foo(const T&) {} // Perform specific actions
};

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); // Deduces and creates foo<int>(5)</code>
登录后复制

以上是自动类型推断可以模拟 C 中的模板继承吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!