8

原則として、decltypeconstness を保持します。

const int ci = 0;
decltype(ci)  x;         // x is const int
x = 5;                   // error--x is const

class Gadget{}:

const Gadget makeCG();         // factory

decltype(makeCG()) y1, y2;     // y1 and y2 are const Gadgets
y1 = y2;                       // error--y1 is const

しかし、const基本的な型を返す戻り値の型についてdecltypeは、捨てるようconstです:

const int makeCI();            // factory

decltype(makeCI()) z;          // z is NOT const
z = 5;                         // okay

decltypeこの場合、consness を破棄するのはなぜですか? 私は2つの意味で質問を意味します:

  1. 標準のどの部分でこの動作が指定されていますか?
  2. このように動作を指定する動機は何ですか?

ありがとう。

4

1 に答える 1