Ash*_*can 6 c++ return-type constexpr c++11 c++14
以下代码给出了以下警告.有人可以解释一下原因(注意代码没有用,因为我用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)));
};
Run Code Online (Sandbox Code Playgroud)
max*_*x66 15
在auto返回类型"无尾返回类型"是一个C++ 14的功能,所以我想你正在编译C++ 11.
你的代码在C++ 14中是可以的,但是对于C++ 11,如果你想auto用作返回类型,你需要用这种方式描述有效的返回类型(注意:伪代码)
auto funcName (args...) -> returnType
Run Code Online (Sandbox Code Playgroud)
你知道sizeof()返回std::size_t,所以你的例子可以纠正为
constexpr auto MaxEventSize() -> std::size_t
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
Run Code Online (Sandbox Code Playgroud)
或者(在这种情况下,愚蠢,但在更复杂的例子中显示)
constexpr auto MaxEventSize() -> decltype( cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int))) )
{
return cexMax(sizeof(int),
cexMax(sizeof(int),
sizeof(int)));
};
Run Code Online (Sandbox Code Playgroud)