#include <iostream>
using std::cout;
using std::endl;
using std::boolalpha;
using std::add_rvalue_reference_t;
using std::is_reference_v;
int main(void) {
cout << boolalpha << is_reference_v<add_rvalue_reference_t<int>> << endl; // true
cout << boolalpha << is_reference_v<add_rvalue_reference_t<int &>> << endl; // true
cout << boolalpha << is_reference_v<add_rvalue_reference_t<int &&>> << endl; // true
cout << boolalpha << is_reference_v<add_rvalue_reference_t<void>> << endl; // false
return 0;
}
我想知道除void之外是否还有其他不可引用的类型?
答案 0 :(得分:5)
std::add_rvalue_reference
也不会为具有cv-qualifier或ref-qualifier的函数类型创建引用类型。例如
cout << boolalpha << is_reference_v<add_rvalue_reference_t<void() const>> << endl; // false
cout << boolalpha << is_reference_v<add_rvalue_reference_t<void() volatile>> << endl; // false
cout << boolalpha << is_reference_v<add_rvalue_reference_t<void() const volatile>> << endl; // false
cout << boolalpha << is_reference_v<add_rvalue_reference_t<void() &>> << endl; // false
cout << boolalpha << is_reference_v<add_rvalue_reference_t<void() &&>> << endl; // false