Предположим, существует класс шаблона template <class T> myclass;
.
Существует ли идиоматический способ, позволяющий преобразовывать объекты неконстантного T
в объекты const T
?
В основномЯ хочу, чтобы следующее преобразование происходило неявно:
void f(myclass<const int> x);
myclass<int> a;
f(a); // should compile
ВАЖНОЕ РЕДАКТИРОВАНИЕ:
Кажется, что ответ очень тривиален (и вопрос довольно глуп)но в этом есть что-то очень концептуальное (по крайней мере, для меня).
У меня сложилось впечатление, что мне нужно условно включить оператор преобразования, потому что оператор преобразования из myclass<const T>
в myclass<const T>
не делаетв любом смысле, т.е. мне нужно объявить оператор преобразования тогда и только тогда, когда T
был const
квалифицированным.Я ожидал, что компилятор пожалуется на избыточный оператор преобразования.
Теперь, учитывая, что компилятор удовлетворен оператором преобразования идентификаторов, который преобразует тип X
в X
, в чем разница между оператором присваивания иликонструктор копирования и оператор преобразования идентификаторов?
MSVC выдает предупреждение для оператора преобразования идентификаторов.Это не здорово.