如何抑制使用的内联函数,但从未在g ++中定义警告

问题描述 投票:1回答:1

上下文:我正在做一些编译时编程,其中涉及使用仅在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++ g++ warnings
1个回答
0
投票

如果您正在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))
© www.soinside.com 2019 - 2024. All rights reserved.