我试图使用detector
来写,根据std::experiment::is_detected_v来检查一种类型是否可分配。但是std::declval<int>() = std::declval<int>()
无效,只有std::declval<int&>() = std::declval<int>()
有效。
为什么会这样?
答案 0 :(得分:4)
查看std::declval
的签名:
template<class T>
typename std::add_rvalue_reference<T>::type declval() noexcept;
std::declval<int>()
的类型为int&&
,一个右值(xvalue)。您无法分配给右值int
。