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

Сообщение Re[4]: примеры noexcept(expr) от 30.03.2017 9:36

Изменено 30.03.2017 9:39 Alexander G

Re[4]: примеры noexcept(expr)
Здравствуйте, N. I., Вы писали:

NI>Необходимости использовать declval там нет, т.к. в noexcept-specification можно использовать имена параметров функции (так же, как и в trailing-return-type)

template <typename T>
void foo(const T& a1, const T& a2)
    noexcept(noexcept(a1 == a2 || a1 > a2))
{
    // ...
    if (a1 == a2 || a1 > a2)
    // ...


Всё равно не хочу такую колбасу писать, хочу так
template <typename T>
void foo(const T& a1, const T& a2) noexcept(auto)
{
    // ...
    if (a1 == a2 || a1 > a2)
    // ...
}


Re[4]: примеры noexcept(expr)
Здравствуйте, N. I., Вы писали:

NI>Необходимости использовать declval там нет, т.к. в noexcept-specification можно использовать имена параметров функции (так же, как и в trailing-return-type)

template <typename T>
void foo(const T& a1, const T& a2)
    noexcept(noexcept(a1 == a2 || a1 > a2))
{
    // ...
    if (a1 == a2 || a1 > a2)
    // ...


Всё равно не хочу такую колбасу писать, хочу так
template <typename T>
void foo(const T& a1, const T& a2) noexcept(auto)
{
    // ...
    if (a1 == a2 || a1 > a2)
    // ...
    [[noexcept]]
    {
    // а здесь мы что-то вызвали, что не бросает, но компилятор не знает об этом
    }
}