Стандарт 12.3.2/1
A member function of a class X with a name of the form
conversion-function-id:
operator conversion-type-id
conversion-type-id:
type-specifier-seq conversion-declarator opt
conversion-declarator:
ptr-operator conversion-declarator opt
specifies a conversion from X to the type specified by the conversion-type-id. Such member functions are
called conversion functions. Classes, enumerations, and typedef-names shall not be declared in the
type-specifier-seq.
......
Никак не могу понять смысл выделенного. Получающиеся у меня толкования противоречат моему представлению о предмете. Как правильно перевести?
Здравствуйте, Аноним, Вы писали:
А>Стандарт 12.3.2/1
А>А> A member function of a class X with a name of the form
А> conversion-function-id:
А> operator conversion-type-id
А> conversion-type-id:
А> type-specifier-seq conversion-declarator opt
А> conversion-declarator:
А> ptr-operator conversion-declarator opt
А>specifies a conversion from X to the type specified by the conversion-type-id. Such member functions are
А>called conversion functions. Classes, enumerations, and typedef-names shall not be declared in the
А>type-specifier-seq.
А>......
А>Никак не могу понять смысл выделенного. Получающиеся у меня толкования противоречат моему представлению о предмете. Как правильно перевести?
Новые классы, перечисления или определения типов не могут быть обьявлены в type-specifier-seq. То есть тип должен быть обьявлен(Хотя-бы предварительно)
Здравствуйте, BitField, Вы писали:
BF>Новые классы, перечисления или определения типов не могут быть обьявлены в type-specifier-seq. То есть тип должен быть обьявлен(Хотя-бы предварительно)
То есть ты не можешь написать:
class A
{
public:
operator enum X { aa, bb } () const;
};
//ты должен писать
class A
{
public:
enum X { aa, bb};
operator X() const;
};
Здравствуйте, BitField, Вы писали:
BF>Здравствуйте, BitField, Вы писали:
BF>>Новые классы, перечисления или определения типов не могут быть обьявлены в type-specifier-seq. То есть тип должен быть обьявлен(Хотя-бы предварительно)
BF>То есть ты не можешь написать:
BF>
BF>class A
BF>{
BF>public:
BF> operator enum X { aa, bb } () const;
BF>};
BF>//ты должен писать
BF>class A
BF>{
BF>public:
BF> enum X { aa, bb};
BF> operator X() const;
BF>};
BF>
Спасибо, я понял. Ключевое слово declared.