前向兼容手札 头像

消息来源频道

前向兼容手札

@zyf_at_rochester

频道122 位成员公开可见0 人在线

后向兼容什么的,才没人在意呢!

成员规模122 位成员
在线情况0 人在线
消息总数888 条消息
浏览量总数15,140 次浏览

在这个频道里搜索消息……

t.me/zyf_at_rochester

template<auto, auto>
struct ADLType {
friend consteval auto ADLFunc(ADLType, auto...);
};
template<auto InstanceIdentifier, auto x>
struct InjectDefinitionForADLFunc {
friend consteval auto ADLFunc(ADLType<InstanceIdentifier, x>, auto...) {}
};
template<auto InstanceIdentifier, auto x = 0, auto = []{}>
constexpr auto ExtractThenUpdateCurrentState()->decltype(x) {
if constexpr (requires { ADLFunc(ADLType<InstanceIdentifier, x>{}); })
return ExtractThenUpdateCurrentState<InstanceIdentifier, x + 1>();
else
InjectDefinitionForADLFunc<InstanceIdentifier, x>{};
return x;
}
template<auto InstanceIdentifier = []{}>
struct AffineType {
template<auto x = ExtractThenUpdateCurrentState<InstanceIdentifier>()>
auto Use() requires (x == 0) {}
};
auto main()->int {
auto x = AffineType{};
auto y = AffineType{};
x.Use();
y.Use();
// x.Use(); <- type level failure
}
艹,原来rust是抄的c艹