Nic*_*oni 6 c++ c++-concepts c++20
由于概念检查递归,我无法在 clang++16 上编译以前的工作代码。编译器给我以下错误:
错误:满足约束 'requires { { __t < __u } -> __boolean_testable; { __u < __t } -> __boolean_testable; }' 取决于它自己
这是复制错误的最小代码,适用于以前的版本:
#include <vector>
#include <variant>
#include <iostream>
struct var;
typedef std::vector<var> var_vector;
typedef std::variant<int, var_vector> var_base_type;
struct var : public var_base_type {
using var_base_type::var_base_type;
bool operator<(const var &to) const {
if (index() != to.index())
return index() < to.index();
if (holds_alternative<int>(*this))
return get<int>(*this) < get<int>(to);
if (holds_alternative<var_vector>(*this))
return get<var_vector>(*this) < get<var_vector>(to);
return false;
}
};
int main() {
std::cout << (var(10) < var(20)) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
概念语法中有没有办法强制概念在类型中有效var_vector?
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |