有没有一种使用C++模板魔法(可能使用SFINAE等)来实现universal和existential量化的方法?类似于这样:
template
<
template <typename Argument> class Predicate
>
struct UniversalQuantification
{
static const bool value =
/*for any Argument Predicate<Argument>::value == true ? true : false*/;
};
template
<
template <typename Argument> class Predicate
>
struct ExistentialQuantification
{
static const bool value =
/*for some Argument Predicate<Argument>::value == true ? true : false*/;
};
template<template<typename>class pred> struct tmp { template<typename T> using map = pred<T>; };
。接着是template<typename pred_class> struct universal { static const bool value = pred_class::template map<any_type>::value; };
当然,这里的any_type
是universal
的神奇变量。最后你可以尝试一下universal<tmp<pred> >
。 - iavr