a, b is an expression. According to decltype rules for expressions, if result of the expression is an lvalue, type is going to be deduced as T&
7.1.6.2/4 Simple type specifiers [dcl.type.simple]
  For an expression e, the type denoted by decltype(e) is defined as follows:  
- if e is an unparenthesized id-expression or an unparenthesized
  class member access (5.2.5), decltype(e) is the type of the entity
  named by e. If there is no such entity, or if e names a set of
  overloaded functions, the program is ill-formed;   
 
- otherwise, if e is an xvalue, decltype(e) is T&&, where T is the type of e;
 
- otherwise, if e is an lvalue, decltype(e) is T&, where T is the type
  of e;  
 
- otherwise, decltype(e) is the type of e.
 
The confusing part about difference between "type of the entity named by e" and "type of e" is easy to understand with example:
If some entity e is declared as int& e = x;, then later, in expression e, type of e is int, and type of the entity named by e is int&. In short, type of e drops reference qualifiers.