【发布时间】:2021-04-04 09:31:56
【问题描述】:
C++ 概念在 C++ 中是一个相对较新的概念。 但我们对它的工作原理几乎没有可用的解释。
struct contain {
public:
using Tin = int;
using Tout = int;
Tout sqr(Tin x)
{
return x * x;
}
contain(int _x) : x(_x)
{
}
int get_x() const
{
return x;
}
private:
int x;
};
int cube(contain u)
{
int x = u.get_x();
return x * x * x;
}
也就是说,我们想要一个包含 Tin、Tout 和成员函数 Tout sqr(Tin) 的测试概念。是否也可以测试是否有非成员函数cube(contain)?
【问题讨论】:
-
你确定我们说的是同一件事吗?概念旨在与模板参数一起使用,like this。您是否要求一个需要与您的
contains具有相同接口 的东西的概念? -
概念不是那个新想法。 C++ 很久以来就有named requirements,不同的是概念是语言的一部分。它不太清楚你在问什么。您有一些模板想要检查是否有一些
T嘎嘎,就像您的contains嘎嘎一样? -
是的。你试过了吗?采取方法语法并以明显的方式更改它?
-
我可以为依赖类型 Tin, Tout 写一个概念。但我可以为 sqr 和 cube 做到这一点。总的来说,我发现在通常的网站上 C++ 概念的例子太少了,很可能是因为它们是新的。
标签: c++ c++20 c++-concepts