Skip to content

Добавить возможность создавать типы со строгой именной, а не структурной эквивалентностью #627

@rsashka

Description

@rsashka

Типы со строгой именной эквивалентностью позволят предотвратить автоматические преобразования типов данных и как следствие, связанные с этим логические ошибки.

Чтобы не нарушать обратную совместимость со старым исходным кодом, определение субтипов с именной эквивалентностью можно реализовать по аналогии с контролем обращение к глобальным переменным в функциях и методах классов · Issue #626 · cpp-ru/ideas за счет использования ключевого слова used.

"used subtype int IntSubType;"

Пример использования именной эквивалентности типов

    typedef int IntType;
    used subtype int IntSubType; 
    static_assert(std::is_same<decltype(IntType), int>::value); // OK
    static_assert(std::is_same<decltype(IntSubType), int>::value); // FALSE
    static_assert(std::is_same<decltype(IntSubType), IntType>::value); // FALSE
    static_assert(std::is_same<decltype(IntSubType), IntSubType>::value); // OK

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions