成都网站建设设计

将想法与焦点和您一起共享

C++的模板概念怎么使用

本篇内容主要讲解“C++的模板概念怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的模板概念怎么使用”吧!

专注于为中小企业提供成都网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业本溪免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

T.41:在模板概念中只对本质属性定义需求

Reason(原因)

Keep interfaces simple and stable.

维持接口的简单和稳定。

Example (using TS concepts)(示例(使用TS概念))

Consider, a sort instrumented with (oversimplified) simple debug support:

考虑一种包含(过于简单了)简单的调试功能的排序处理:

void sort(Sortable& s)  // sort sequence s
{
   if (debug) cerr << "enter sort( " << s <<  ")\n";
   // ...
   if (debug) cerr << "exit sort( " << s <<  ")\n";
}

Should this be rewritten to:

应该这样写:

template
   requires Streamable
void sort(S& s)  // sort sequence s
{
   if (debug) cerr << "enter sort( " << s <<  ")\n";
   // ...
   if (debug) cerr << "exit sort( " << s <<  ")\n";
}

After all, there is nothing in Sortable that requires iostream support. On the other hand, there is nothing in the fundamental idea of sorting that says anything about debugging.

毕竟Sortable中没有任何需要iostream支持的东西。同样,排序的基本想法中也没有任何关于调试的需求。

Note(注意)

If we require every operation used to be listed among the requirements, the interface becomes unstable: Every time we change the debug facilities, the usage data gathering, testing support, error reporting, etc., the definition of the template would need change and every use of the template would have to be recompiled. This is cumbersome, and in some environments infeasible.

如果我们要求所有用到的操作都被罗列在需求中,接口的可用性就会降低:每次我们改变调试功能,用法数据收集,测试支持,错误报告,等等,模板的定义都需要修改,并且每个使用模板的代码都必须重新编译。这种方式很笨拙,在某些环境中也是无法做到的。

Conversely, if we use an operation in the implementation that is not guaranteed by concept checking, we may get a late compile-time error.

相反,如果我们使用某个没有被概念检查保证的实现中的操作,我们可能得到迟到的编译时错误。

By not using concept checking for properties of a template argument that is not considered essential, we delay checking until instantiation time. We consider this a worthwhile tradeoff.

通过不用概念检查非本质模板参数的属性,我们将检查延迟到实例化时。我们认为这是一种值得的妥协。

Note that using non-local, non-dependent names (such as debug and cerr) also introduces context dependencies that may lead to "mysterious" errors.

注意,使用非局部,独立名称(例如debug和cerr)也会引入可能导致“神秘”错误的上下文依赖。

Note(注意)

It can be hard to decide which properties of a type are essential and which are not.

很难决定类型的那个属性是本质的,那个属性不是本质的。

到此,相信大家对“C++的模板概念怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前名称:C++的模板概念怎么使用
URL链接:http://chengdu.cdxwcx.cn/article/ijsipd.html