Я хочу создать временную копию объекта const и использовать его неконстантным способом:
struct S {
S& f() { return *this; }
};
int main() {
const S a{};
S{a}.f(); // Error on this line
return 0;
}
Используя msvc (Visual Studio 2017, С++ 14), я получаю эту ошибку:
Ошибка C2662 & S:: f (void) ': не может преобразовать указатель 'this' из' const S 'в &'
Если я изменил инициализацию скобки на классическую инициализацию, она работает:
S{a}.f(); // Does not work
S(a).f(); // Works
Оба варианта компилируются в gcc. Я что-то упустил или это ошибка компилятора?