此代码中发生了什么?很混乱。- >函数原型意味着什么?
#include <utility>
struct check
{
template <typename T>
auto foo() -> decltype(std::declval<T>().value, void())
{
static_assert(T{}.value == 10, "Incorrect value");
}
} var;
int main()
{
struct apple
{
int value{10};
};
var.foo<apple>();
}
具体来说,它具有的部分->
及其后的所有内容。
- >是尾随返回类型。 'declval'是这个班级的一个实例。 'decltype'找到编译时表达式的类型。 'static_assert'是一个编译时断言。把它们拼凑在一起的时间:) – chris
含糊不清的标题不会对其他有相同问题的人有用。 –
@RiaD:虽然标题编辑更有帮助,但它仍然不准确 - 他似乎在询问特定用途。 –