只有“void”是不可引用的类型吗?

火狐狸*_*火狐狸 4 c++ types c++11

#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;
}
Run Code Online (Sandbox Code Playgroud)

我想知道除了 void 之外是否还有其他不可引用的类型?

son*_*yao 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
Run Code Online (Sandbox Code Playgroud)

居住