I know that void&
is invalid. But, are there any other types, that are non-referenceable?
std::add_rvalue_reference
won't make reference type for function type with cv-qualifier or ref-qualifier either. e.g.
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