Информация об изменениях

Сообщение Re: Что не так с C++ - компил-таймовый C++ от 10.12.2024 7:54

Изменено 10.12.2024 10:52 Serginio1

Re: Что не так с C++ - компил-таймовый C++
Здравствуйте, Shmj, Вы писали:

S>В последнее время думаю что не так с C++


А в C++ есть дженерики? По уму можно изначально пользовать дженерики, а когда отладились перевели на шаблоны.
Или условную компиляцию для Debug дженерики для Release шаблоны.
Зато в отладчике интеллисенсе и прочие плюшки статической компиляции
Например в C++/CLI можно использовать и дженерики и шаблоны
Generics and Templates (C++/CLI)

В С# есть Generic math

C# 11.0: Generic Math, C# Operators and Static Abstract/Virtual Interface Members
Re: Что не так с C++ - компил-таймовый C++
Здравствуйте, Shmj, Вы писали:

S>В последнее время думаю что не так с C++


А в C++ есть дженерики? По уму можно изначально пользовать дженерики, а когда отладились перевели на шаблоны.
Или условную компиляцию для Debug дженерики для Release шаблоны.
Зато в отладчике интеллисенсе и прочие плюшки статической компиляции
Например в C++/CLI можно использовать и дженерики и шаблоны
Generics and Templates (C++/CLI)

В С# есть Generic math

C# 11.0: Generic Math, C# Operators and Static Abstract/Virtual Interface Members

Смысл использовать перегрузку операторов как метод интерфейса

public interface IAddition<T> where T : IAddition<T>
{
    static abstract T operator +(T left, T right);
}


public class Person : IAddition<Person>
{
    public int Age { get; set; }

    public static Person operator +(Person left, Person right)
    {
        return new Person { Age = left.Age + right.Age };
    }
}

Now, with our new IAddition<T> interface, you can implement a generic Add method like you see it in the code snippet below. Note the generic type constraint that uses the new IAddition<T> interface.

public class Additions
{
    public static T Add<T>(T x, T y) where T : IAddition<T>
    {
        return x + y;
    }
}

This means now that you can use that generic Add method with Person objects. You can see this in the code snippet below.

var thomas = new Person { Age = 26 };
var julia = new Person { Age = 24 };

Person personResult = Additions.Add<Person>(thomas, julia);

var age = personResult.Age; // age is 50;