Изучая "noexcept specifier (и operator)", я написал простой код. И я удивлен, что этот фрагмент кода:
void asdf() noexcept {}
int main()
{
auto f = asdf;
std::cout << std::boolalpha << noexcept(f()) << std::endl;
}
печатает false
, даже функция "asdf" не указана.
Итак, во время поиска, почему это таинственное явление происходит, я нашел С++ 17 "система спецификатора исключений" - P0012R1.
В соответствии с этим (принятым) предложением, поскольку С++ 17; поскольку noexcept
является частью типа функции, будет ли вышеприведенный код true
?
И еще один, в этом задайте одну строку:
std::function<void() noexcept> f
Указание noexcept
кажется проигнорированным в С++ 14 или 11.
Будет ли этот код работать по назначению на С++ 17?