上下文:我正在做一些编译时编程,其中涉及使用仅在decltype上下文中求值的constexpr函数来处理类型。
例如,一个弹出函数,它从类型列表中删除第一个类型:
template <typename T0, typename... T1toN>
constexpr auto pop(List<T0, T1toN...>) -> List<T1toN...>;
这些功能的用法如下
decltype(pop(my_type_list))
换句话说,它们永远不会被“执行”。但是,编译器(g ++)给我警告,例如warning: inline function ‘constexpr List<T1toN ...> pop(List<T0, T1toN ...>) [with T0 = Type1; T1toN = {Type2, Type3}]’ used but never defined
问题:有什么方法可以禁止使用此但从未定义的警告?并且可能仅对在decltype上下文中(间接)求值的函数执行此操作吗?
我正在使用g ++版本8.3
如果您正在C ++ 17(或更高版本!)模式下进行编译,那么您应该可以将该函数标记为[[maybe_unused]]
:
[[maybe_unused]]
如果您不使用C ++ 17或不介意使用gcc / g ++特定属性,则可以尝试template <typename T0, typename... T1toN>
[[maybe_unused]] constexpr auto pop(List<T0, T1toN...>) -> List<T1toN...>;
:
__attribute__((unused))