问题标签 [c++-concepts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
165 浏览

c++ - 具有特定成员方法的 C++ 模板类型

调用模板类型的成员函数的好方法是什么?下面的foo()代码是否只为bla()定义了函数的类型编译?

我可以只为有方法boost::enable_if的类型定义这个函数吗?bla()如果是,那是个好主意吗?我想“概念”(我对此一无所知)的想法可能是这里需要使用的。

0 投票
3 回答
1949 浏览

c++ - 为什么概念会使 C++ 编译速度变慢?

它到底想做什么邪恶的魔法!?!

我正在听一个关于草本萨特的问答环节,其中一个问题是关于概念的。Herb 提到它使编译器变慢(而源代码保持不变)并且该部分明显大于模板部分。

为什么这样做?我在哪里可以找到有关概念的文档?

0 投票
1 回答
331 浏览

c++ - Boost BCCL 容器算法工作示例

有人可以给出一个完整的(包括所有头文件)工作(编译)示例,说明如何在例如 aboost::RandomAccessContainer和 std::sort 上使用 Boost BCCL?

0 投票
4 回答
479 浏览

c++ - 当我们已经有了类和接口时,为什么还要构思概念(通用编程)?

同样在programmers.stackexchange.com 上

我知道 STL 概念必须存在,将它们称为“类”或“接口”是愚蠢的,而实际上它们只是记录(人类)概念并且当时无法翻译成 C++ 代码,但是当有机会扩展语言以适应概念时,他们为什么不简单地修改类的功能和/或引入接口?

一个概念不是类似于接口(100% 没有数据的抽象类)吗?通过观察,在我看来,接口只缺乏对公理的支持,但也许公理可以被引入 C++ 的接口中(考虑在 C++ 中假设采用接口来接管概念),不是吗?我认为即使是汽车概念也可以很容易地添加到这样的 C++ 接口中(汽车接口 LessThanComparable,有人吗?)。

一个concept_map 不是和Adapter 模式相似吗?如果所有方法都是内联的,则适配器在编译时间之后基本上不存在;编译器只是用内联版本替换对接口的调用,在运行时直接调用目标对象。

我听说过一种叫做静态面向对象编程的东西,它本质上意味着在通用编程中有效地重用面向对象的概念,从而允许使用 OOP 的大部分功能而不会产生执行开销。为什么没有进一步考虑这个想法?

我希望这足够清楚。如果您认为我不是,我可以重写它;让我知道。

0 投票
1 回答
322 浏览

c++ - C++ Boost 概念弃用警告

页面顶部警告不推荐使用的 API。那我在哪里可以找到它的替代品呢?

0 投票
2 回答
1601 浏览

c++ - 如何在编译时检查表达式是否非法?

我的应用程序中有一个问题,我想断言一个函数应用程序将被编译器拒绝。有没有办法通过 SFINAE 进行检查?

例如,假设我想验证std::transform某个const范围是非法的。这是我到目前为止所拥有的:

不幸的是,我的特质拒绝合法和非法案件。结果:

0 投票
1 回答
294 浏览

c++ - 为什么 boost::multi_array 的 ConstMultiArrayConcept 有一个 NumDims 模板参数?

我编写了一个operator<<专门处理boost::multi_array, 并使用ConstMultiArrayConcept它,以便它可以在外部数组和子数组上工作。不过,我想知道为什么这些multi_array概念有一个std::size_t NumDims模板参数,因为它可以简单地从multi_array. NumDimsin的唯一用途ConstMultiArrayConcept是作为 的递归深度参数idgen_helper,用于测试切片。

multi_array作为参考,这里是概念 的标题:http: //www.boost.org/doc/libs/1_51_0/boost/multi_array/concept_checks.hpp

这是我的超载operator<<

这种专业化工作,但我必须在我的理解中遗漏一些东西。任何线索将不胜感激。

0 投票
1 回答
1352 浏览

c# - 面向对象层

嘿伙计们,我已经用 C++ 编写了一个学期的 OOP,而我刚刚开始使用 C#。我仍然不完全了解如何将图层彼此分开以及在哪里做什么。据我了解,有以下几层:

存储 -> 数据访问 -> 业务逻辑 -> 命令处理器 -> 用户界面

现在我似乎无法完全理解每一层的责任是什么..

我了解数据访问仅包含诸如添加、更新、删除、查询之类的方法,并且数据访问并不关心它插入了什么,它只是接收对象作为参数并对其进行任何处理。业务逻辑是否从命令处理器发送的数据创建对象,命令处理器从用户界面获取它并对其进行输入验证?

另外,我将如何发送和接收不同的命令,例如查询命令与插入命令有何不同,因为它需要发回数据。

正如您可能会说的那样,我很迷茫,而且我一直很难找到关于这个主题的好的教程。

谢谢!

编辑。

我试图从数据访问层查询方法开始。我将三个子对象存储在父类型的通用列表中。

我有不同的查询选项,其中之一是类型。所以我需要搜索父列表并返回每个对象的数据,如果它是指定的类型。我的父对象有一个被覆盖的 ToString() 以及我的子对象,它们调用父对象 ToString() 以将对象的所有数据放入一个字符串中。我在这里做业务逻辑职责吗?此外,当我获得与我的类型匹配的对象列表并尝试使用 foreach 调用 ToString() 进行迭代时,它只会调用父 ToString() 我猜?

0 投票
1 回答
283 浏览

c++ - boost 概念检查 operator() 重载

我想检查是否存在至少两个重载PrinterT::operator()(T*),并且PrinterT::operator()(C*)
PrinterT可能会或可能不会继承std::unary_function
我需要在这里使用什么概念检查类?

(我没有使用 C++11)

0 投票
4 回答
3011 浏览

algorithm - 选择排序算法的标准

我很想知道如何根据输入选择排序算法,以便获得最佳效率。

应该是输入的大小还是输入的排列方式(Asc / Desc)或使用的数据结构等......?