gpt4 book ai didi

c++ - Boost.TTI 不适用于 Clang

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:54 25 4
gpt4 key购买 nike

Boost 1.54 添加了一个新库,Boost.TTI用于类型特征内省(introspection)。以下代码使用 has_template功能,适用于 g++ 但不适用于 Clang

#include <boost/tti/has_template.hpp>

BOOST_TTI_HAS_TEMPLATE(Template1)
BOOST_TTI_HAS_TEMPLATE(Template2)
BOOST_TTI_HAS_TEMPLATE(Template3)

struct Top
{
template <class X> struct Template1 { };
template <typename A,typename B,typename C> class Template2 { };
template <typename A,typename B,typename C,int D> class Template3 { };
};

int main()
{
static_assert( has_template_Template1<Top>::value, ""); // true
static_assert( has_template_Template2<Top>::value, ""); // true
static_assert(!has_template_Template3<Top>::value, ""); // false, not all typename/class template parameters
}

Live Example .

问题:为什么这段代码不能在 Clang 上编译?根据 Boost.TTI 文档,需要支持可变参数宏,但 Clang 从 2.9 开始就支持它。

最佳答案

关于c++ - Boost.TTI 不适用于 Clang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23179692/

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