首页 > 解决方案 > c++ 元函数返回一个类型

问题描述

我正在尝试创建一个返回类型的元函数。灵感来自C++ meta-function over templates中第一个被接受的答案。我希望我的元函数返回类型char,然后我想使用该输出来创建一个 char 变量。我相信我的模板有效,但我不知道如何检查输出。我无法打印它。如何检查返回的类型是什么?如何使用返回的类型来创建变量?

这是我的代码的摘要版本:

template<typename T> struct AA;
// allow for shorter syntax - decl<...>
template<typename T> using decl = typename AA<T>::result;

// char termination
template<ExprType eType>
struct AA<Expr<eType>> { using result = char; };

...other templates that specialize and allow for recursion

int main()
{
    decl<..many args..> typee;

    return 0;
}

标签: c++templatestemplate-meta-programming

解决方案


您可以检查类型

static_assert(std::is_same_v<char, decl</*..many args..*/>>)

对于调试,您可以使用

template <typename> struct Debug; /* No definition */

Debug<decl</*..many args..*/>> d; // Error similar to: No definition for Debug<char>

推荐阅读