Недавно начал изучать C++, появились вопросы, на которые самостоятельно не могу найти ответ.
Есть класс, в котором объявлен шаблон оператора приведения типа:
Код:
class SomeClass{
// ...
public:
template <typename value_type>
operator value_type() const;
// Если не шаблон, то было бы так:
// operator int() const;
}
Вопрос 1:
Синтаксически здесь всё правильно, компилятор не ругается. Тем не менее возникает вопрос, правильно ли компилятор меня понял, не создал ли он шаблон-функцию с именем value_type?
Вопрос 1:
Синтаксически здесь всё правильно, компилятор не ругается. Тем не менее возникает вопрос, правильно ли компилятор меня понял, не создал ли он шаблон-функцию с именем value_type?
Объявление функции выглядит так: тип имя(параметры). В данном случае вы опасаетесь, что создалась функия value_type, которая возвращает тип operator? Вряд ли :-)
Вопрос 1:
Синтаксически здесь всё правильно, компилятор не ругается. Тем не менее возникает вопрос, правильно ли компилятор меня понял, не создал ли он шаблон-функцию с именем value_type?
Правильно. Во первых, как указали выше, синтаксис для определения функций другой. Во вторых, сам использую подобный трюк. Работает.