Search code examples
c++referenceconstantstemporary

error in attaching temporary to a reference to const


Possible Duplicate:
typedef and containers of const pointers

Why is the code emitting an error?

int main()
{
  //test code
  typedef int& Ref_to_int;
  const Ref_to_int ref = 10; 
}

The error is:

error: invalid initialization of non-const reference of type ‘int&’ from a temporary of type ‘int’

I read the post on prolonging the lifetime of temporaries which says that temporaries can be bound to references to const. Then why is my code not getting compiled?


Solution

  • Here the type of ref is actually reference to int and not const reference to int. The const qualifier is ignored.

    $8.3.2 says

    Cv-qualified references are ill-formed except when the cv-qualifiers are introduced through the use of a typedef (7.1.3) or of a template type argument (14.3), in which case the cv-qualifiers are ignored.

    const Ref_to_int ref; is equivalent to int& const ref; and not const int& ref.