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