c++ - 只有 "void"是不可引用类型吗?

标签 c++ c++11 types

#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之外还有其他类型是不可引用的吗?

最佳答案

std::add_rvalue_reference也不会为带有 cv 限定符或 ref 限定符的函数类型创建引用类型。例如

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

LIVE

关于c++ - 只有 "void"是不可引用类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59367341/

相关文章:

c++ - fstream 比 fopen 快?随着缓冲区的增加变得更快?

c++ - 如何合并两个排序的 vector 并组合重叠元素?

c# - GetType() 会撒谎吗?

C# 泛型类型 : Warning from outer type

c++ - 使用 Text Fixtures -- Google 测试

c++ - 你选择 BOOST 中的哪个 Singleton 库?

c++11 - 为什么虚拟析构函数需要运算符删除?

c++ - 谁能告诉我我的代码有什么问题?

c++ - 如何在 C++ 中使用泛型 vector

c++ - 在头文件中大量转发声明类有什么风险?