C++14 возврат множества значений из функции.
От: Voivoid Россия  
Дата: 06.11.18 10:44
Оценка:
В C++14 добавили возможность автоматического вывода типа зачения возвращаемого функций. В качестве возвращаемых типов в том числе могут выступать анонимные типы:

auto foo() {
    int x = 10;
    int y = 20;
    int z = 30;

    struct {
        int x;
        int y;
        int z;
    } ret;

    ret.x = x;
    ret.y = y;
    ret.z = z;

    return ret;
}

void test()
{
    auto r = foo();
    assert( r.x == 10 );
    assert( r.y == 20 );
    assert( r.z == 30 );
}

live sample:

Выглядит полезно и удобно, однако напрягает бойлерплейт в виде обявления структуры и заполнения её полей. Но магия препроцессора ( реализацию см. в следующем live sample ) приходит на помощь и позволяет написать что-то типа такого:

auto foo() {
    int x = 10;
    int y = 20;
    int z = 30;

    RETURN_ANONYMOUS_STRUCT( x, y, z );
}

live sample:



Такие вот мысли возникли. Может кому покажется интересным и пригодится.
с++14 auto return
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.