Affected subclause: [expr.cond]
 Change: A conditional expression with a throw expression as its second or third
operand keeps the type and value category of the other operand
.   Rationale: Formerly mandated conversions (lvalue-to-rvalue (
[conv.lval]),
array-to-pointer (
[conv.array]), and function-to-pointer (
[conv.func])
standard conversions), especially the creation of the temporary due to
lvalue-to-rvalue conversion, were considered gratuitous and surprising
.   Effect on original feature: Valid C++ 2011 code that relies on the conversions may behave differently
in this revision of C++
.  For example:
struct S {
  int x = 1;
  void mf() { x = 2; }
};
int f(bool cond) {
  S s;
  (cond ? s : throw 0).mf();
  return s.x;
}
 
In C++ 2011, 
f(true) returns 
1.In this revision of C++,
it returns 
2.
In C++ 2011, the expression yields 
sizeof(const char*).In this
revision of C++, it yields 
sizeof(const char[1]).