c++ - 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;
}
解决方案
您可以检查类型
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>
推荐阅读
- tensorflow - 'tensorflow.python.framework.ops.EagerTensor' 对象没有属性 '_keras_history' 加上使用带有 validate_indices 收集的警告
- pytorch - Actor-Critic 模型:如何在模型和动作批次之间调整大小
- godot - 如何为 Godot 制作 Multimesh 构建脚本?
- c++ - 如何在 C++ 编译时检测结构的成员是否是位域?
- java - 使用 CheckableSpinnerAdapter
- performance - PowerShell :: Get-Counter 显示错误的 CPU 使用率
- javascript - 如何使用 API 中的数据更新组件的状态
- javascript - 有没有办法从javascript数组中找到一个对象
- python - 随机森林微调卡在运行中
- c - Sunxi ARM SoC唤醒原因?