struct A
{
A() {}
private:
A(const A&); // Explicitly disable the copy constructor.
};
int main()
{
const A a1; // OK.
A a2; // OK.
auto a3 = const_cast<A&>(a1); // Compiler error C2248! ???
}
Мой компилятор C++ является последним предварительным просмотром VC++ 2013.Почему const_cast не ведет себя так, как ожидалось?
Компилятор жалуется на последней строке с ошибкой C2248: «A :: A»: не может получить доступ к закрытому члену, объявленный в классе «А»
Почему const_cast себя не так, как ожидалось?
Это означает, что 'const_cast' генерирует новые объекты? – lulyon
@lulyon: нет; результат 'const_cast ' является ссылкой на существующий объект. Объявление объекта генерирует новый объект, и это то, что 'auto a = whatever;' делает (независимо от того, является ли это '' 'или' ') ссылкой. –