non-const template from const one
От: Tilir Россия http://tilir.livejournal.com
Дата: 24.09.13 12:47
Оценка:
Hi,

Очень простая репра:

template <class T>
class pt
{
};

class A
{
public:
  pt <int> a();
  pt <const int> a() const;
};

int
func(const A& a)
{
  pt <int> x = a.a(); /* ka-boom here! */
}


Совершенно понятно почему возникает ошибка. Но представим на секунду, что *надо* как-то извернуться и всё-таки придумать метод получить здесь non-const из const.

Самый очевидный выход -- const_cast:

int
func(const A& a)
{
  pt <int> x = const_cast<A&>(a).a(); /* works now, but ugly */
}


Но это выглядит как-то уж очень криво и опасно. А больше ничего в голову не приходит. Буду признателен за любые идеи.

---
With best regards, Konstantin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.