C++ 如果在C+中,如何使用带预处理器的gcc uu is_u类+;

C++ 如果在C+中,如何使用带预处理器的gcc uu is_u类+;,c++,gcc,macros,preprocessor,C++,Gcc,Macros,Preprocessor,如果函数是一个类,我想给它发送一个var。我尝试使用std::is_类,但这给了我一个错误,因为std::is_类是运行时的,而不是预处理器。我不能让预处理器工作。有什么建议吗?在循环中的函数“toJson”中,我将类型添加到json对象中。我需要检查类型是否为class,以便将classes字段递归添加到json对象 源代码: 如果constexpr正是我需要的。它可以在编译时比较该类型,这允许我调用正确的函数并完全忽略与该类型不兼容的其他函数 if constexpr (std::is_cl

如果函数是一个类,我想给它发送一个var。我尝试使用std::is_类,但这给了我一个错误,因为std::is_类是运行时的,而不是预处理器。我不能让预处理器工作。有什么建议吗?在循环中的函数“toJson”中,我将类型添加到json对象中。我需要检查类型是否为class,以便将classes字段递归添加到json对象

源代码:


如果constexpr
正是我需要的。它可以在编译时比较该类型,这允许我调用正确的函数并完全忽略与该类型不兼容的其他函数

if constexpr (std::is_class<Type>::value)
{
    // call the class function
}
else
{
    // not call the class function
}
如果constexpr(std::is_class::value)
{
//调用类函数
}
其他的
{
//不调用类函数
}

为什么要使用预处理器执行此操作?你想解决什么问题?在预处理过程中类型还不存在。这是行不通的。请解释你想做什么,而不是你认为应该怎么做。如果constexpr或标记调度,你可能在寻找
。元编程?这是一个相当广泛的清单。
#define PROPERTY(CLASS, MEMBER) property(&CLASS::MEMBER, #MEMBER)

    struct GetRooms
    {
        unsigned int status = 0;
        RoomData roomData;
        string name;

        constexpr static auto properties = std::make_tuple(
            PROPERTY(GetRooms, status),
            PROPERTY(GetRooms, roomData),
            PROPERTY(GetRooms, name)
        );
    };

    GetRooms var;
    json varAsJson = toJson(var);
if constexpr (std::is_class<Type>::value)
{
    // call the class function
}
else
{
    // not call the class function
}