问题描述
以下代码给出以下警告.有人可以解释一下原因吗(请注意,该代码没有用,因为我用int替换了我的类型以构成一个完整的示例).
The following code gives the warning below. Can someone please explain why (note the code is not useful as is as I replaced my types with int to make a complete example).
警告:" MaxEventSize()
"函数使用" auto
"类型说明符,而不尾随返回类型[默认启用]
warning: 'MaxEventSize()
' function uses 'auto
' type specifier without trailing return type [enabled by default]
想法是获取特定结构的最大大小(类型在 int
所在的位置).
The idea is to get the maximum size of a particular structure (types go where int
is).
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.
The auto
return type "without trailing return type" is a C++14 feature, so I suppose you're compiling C++11.
您的代码在C ++ 14上是可以的,但对于C ++ 11,如果要使用 auto
作为返回类型,则需要以这种方式描述有效的返回类型(注意:伪代码)
Your code is OK with C++14, but for C++11, if you want use auto
as return type, you need describe the effective return type in this way (caution: pseudocode)
auto funcName (args...) -> returnType
您知道 sizeof()
返回 std :: size_t
,因此您的示例可以更正为
You know that sizeof()
returns std::size_t
, so your example can be corrected as
constexpr auto MaxEventSize() -> std::size_t
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
或(在这种情况下,是愚蠢的,但是在更复杂的示例中显示了用法)
or (silly, in this case, but show the use in more complex examples)
constexpr auto MaxEventSize() -> decltype( cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int))) )
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
这篇关于警告:函数使用“自动"类型说明符,而没有尾随返回类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!