gpt4 book ai didi

c++ - 如何在编译时检查类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:25 26 4
gpt4 key购买 nike

我提供了使用 float 或 double 类型编译程序的选项,但是有一个问题:我需要手动设置 GL_FLOAT 或 GL_DOUBLE,因为我不知道如何执行以下操作:

typedef float MYTYPE;

#if MYTYPE == float
#define GL_MYTYPE GL_FLOAT // used for vertex array parameters.
#else
#define GL_MYTYPE GL_DOUBLE
#endif

注意:我没有 C++11 或其他任何东西,只有很好的旧 C++。

最佳答案

在 C++11 中,您可以使用 std::conditionalstd::is_same作为:

#define GL_MYTYPE  std::conditional                       \
< std::is_same<MYTYPE,float>::value, \
GL_FLOAT, \
GL_DOUBLE \
>::type

在 C++03 中,您可以自己实现这些功能:

template<bool B, class T, class F>
struct conditional { typedef T type; };

template<class T, class F>
struct conditional<false, T, F> { typedef F type; };

template<class T, class U>
struct is_same { static const bool value = false; };

template<class T>
struct is_same<T, T> { static const bool value = true; };

请注意,conditional 的实现取自 site本身。

关于c++ - 如何在编译时检查类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10913728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com