此代碼中發生了什麼?很混亂。- >函數原型意味着什麼?
#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:雖然標題編輯更有幫助,但它仍然不準確 - 他似乎在詢問特定用途。 –