Почему-то это не работает. Разве это не возможно в C ++?
Не так, как вы это делаете. typedef
не работает как макросы препроцессора.
typedef int& A;
typedef const A B;
не переводится в
typedef int& A;
typedef const int& B;
const
in
typedef const A B;
относится к A
, а не к int
части A
. Поскольку ссылки неизменны в C ++, const A
совпадает с A
с точки зрения типа.
Вы можете использовать:
typedef int const& B;
Если вы хотите извлечь его из A
, вы можете использовать:
using B = typename std::remove_reference<A>::type const&;
Если вы можете использовать C ++ 14 или более позднюю версию, вы можете упростить это до:
using B = std::remove_reference_t<A> const&;