C ++ «преобразование теряет квалификаторы» ошибка компиляции

Сегодня я столкнулся с интересной проблемой при отладке типографских карт SWIG. Любой, кто хочет объяснить мне, почему Visual C ++ 2008 выбрасывает "преобразование, теряет квалификаторы" ошибка при конвертации изourLib::Char * вconst ourLib::Char * &? я думалType * - & GT;const Type * было тривиальное преобразование и (при вызове функций)Lvalue - & GT;Lvalue & также.

РЕДАКТИРОВАТЬ: Решение, которое мы в конечном итоге пошли с:

// ourLib::Char is a typedef'ed char on Win32

%typemap(in) const char* (const ourLib::Char* tmp)
{
    if (!bapiLua::LuaTraits<ourLib::Char*>::FromLuaObject(L, $argnum, tmp)) SWIG_fail;
    $1 = const_cast<char *>(tmp);
}

// And in a different source file, already written:
namespace bapiLua {
template<>
struct LuaTraits<ourLib::Char*>
{
    static ourLib::Bool FromLuaObject(lua_State* L, int pos, const ourLib::Char*& o_result);
};
}

Удалениеconst отconst ourLib::Char * tmp вызывает ошибку, которую я описал.

Ответы на вопрос(1)

Ваш ответ на вопрос