В соответствии с этим ответом ref должен быть int.
Но по какой-то причине он оценивается как int&, как в gcc, так и в MSVC2015, а decltype(b) правильно оценивается только int. Почему так?
int a = 1, b = 2;
decltype(a, b) ref; // ref is int&
decltype(b) var; // var is int