下面的代码给出了下面的警告。有人可以解释原因吗(请注意代码没有用,因为我用 int 替换了我的类型来制作一个完整的示例)。
警告:“MaxEventSize()
”函数使用“auto
”类型说明符而没有尾随返回类型[默认启用]
想法是获取特定结构的最大大小(类型位于 int
所在的位置)。
template<typename T>
constexpr T cexMax(T a, T b)
{
return (a < b) ? b : a;
}
constexpr auto MaxEventSize()
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
最佳答案
auto
返回类型“没有尾随返回类型”是 C++14 的一个特性,所以我想你正在编译 C++11。
您的代码适用于 C++14,但对于 C++11,如果您想使用 auto
作为返回类型,您需要以这种方式描述有效的返回类型(注意:伪代码)
auto funcName (args...) -> returnType
您知道 sizeof()
返回 std::size_t
,因此您的示例可以更正为
constexpr auto MaxEventSize() -> std::size_t
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
或者(愚蠢的,在这种情况下,但在更复杂的例子中展示使用)
constexpr auto MaxEventSize() -> decltype( cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int))) )
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
关于c++ - 警告 : function uses 'auto' type specifier without trailing return type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798728/