【发布时间】:2019-05-26 15:15:45
【问题描述】:
我收到std::enable_if_t 未命名模板类型的错误。有趣的是,它包含在文件顶部的#include <type_traits> 行中。但是查看其他一些标准头文件,在不同的目录中有另一个名为 type_traits 的文件,它没有定义enable_if_t。 gcc 如何决定使用这些文件中的哪一个以及如何更改它?
我要使用的文件路径是:
.../arm-none-eabi/include/c++/7.3.1/type_traits
我不知道 gcc 正在使用什么文件,但这些文件没有应该解决我的问题的定义:
.../arm-none-eabi/include/c++/7.3.1/bits/cpp_type_traits.h
.../arm-none-eabi/include/c++/7.3.1/ext/type_traits.h
.../arm-none-eabi/include/c++/7.3.1/experimental/type_traits
.../arm-none-eabi/include/c++/7.3.1/tr2/type_traits
.../arm-none-eabi/include/c++/7.3.1/tr1/type_traits
【问题讨论】:
-
gcc 有一个标准搜索地点列表。您可以使用
-v(IIRC) 编译器标志打印列表。默认情况下,.../tr1 或 .../tr2 不太可能在该列表中。也许你已经用-I添加了这些目录? -
您还可以通过提供
-H编译器标志来打印实际上包含的文件的名称(带有完整路径)。