| Defined in header <system_error> | ||
|---|---|---|
| enum class errc; | (since C++11) | 
The scoped enumeration std::errc defines the values of portable error conditions that correspond to the POSIX error codes.
| Constant | Equivalent POSIX Error | 
|---|---|
| address_family_not_supported | EAFNOSUPPORT | 
| address_in_use | EADDRINUSE | 
| address_not_available | EADDRNOTAVAIL | 
| already_connected | EISCONN | 
| argument_list_too_long | E2BIG | 
| argument_out_of_domain | EDOM | 
| bad_address | EFAULT | 
| bad_file_descriptor | EBADF | 
| bad_message | EBADMSG | 
| broken_pipe | EPIPE | 
| connection_aborted | ECONNABORTED | 
| connection_already_in_progress | EALREADY | 
| connection_refused | ECONNREFUSED | 
| connection_reset | ECONNRESET | 
| cross_device_link | EXDEV | 
| destination_address_required | EDESTADDRREQ | 
| device_or_resource_busy | EBUSY | 
| directory_not_empty | ENOTEMPTY | 
| executable_format_error | ENOEXEC | 
| file_exists | EEXIST | 
| file_too_large | EFBIG | 
| filename_too_long | ENAMETOOLONG | 
| function_not_supported | ENOSYS | 
| host_unreachable | EHOSTUNREACH | 
| identifier_removed | EIDRM | 
| illegal_byte_sequence | EILSEQ | 
| inappropriate_io_control_operation | ENOTTY | 
| interrupted | EINTR | 
| invalid_argument | EINVAL | 
| invalid_seek | ESPIPE | 
| io_error | EIO | 
| is_a_directory | EISDIR | 
| message_size | EMSGSIZE | 
| network_down | ENETDOWN | 
| network_reset | ENETRESET | 
| network_unreachable | ENETUNREACH | 
| no_buffer_space | ENOBUFS | 
| no_child_process | ECHILD | 
| no_link | ENOLINK | 
| no_lock_available | ENOLCK | 
| no_message_available(deprecated) | ENODATA | 
| no_message | ENOMSG | 
| no_protocol_option | ENOPROTOOPT | 
| no_space_on_device | ENOSPC | 
| no_stream_resources(deprecated) | ENOSR | 
| no_such_device_or_address | ENXIO | 
| no_such_device | ENODEV | 
| no_such_file_or_directory | ENOENT | 
| no_such_process | ESRCH | 
| not_a_directory | ENOTDIR | 
| not_a_socket | ENOTSOCK | 
| not_a_stream(deprecated) | ENOSTR | 
| not_connected | ENOTCONN | 
| not_enough_memory | ENOMEM | 
| not_supported | ENOTSUP | 
| operation_canceled | ECANCELED | 
| operation_in_progress | EINPROGRESS | 
| operation_not_permitted | EPERM | 
| operation_not_supported | EOPNOTSUPP | 
| operation_would_block | EWOULDBLOCK | 
| owner_dead | EOWNERDEAD | 
| permission_denied | EACCES | 
| protocol_error | EPROTO | 
| protocol_not_supported | EPROTONOSUPPORT | 
| read_only_file_system | EROFS | 
| resource_deadlock_would_occur | EDEADLK | 
| resource_unavailable_try_again | EAGAIN | 
| result_out_of_range | ERANGE | 
| state_not_recoverable | ENOTRECOVERABLE | 
| stream_timeout(deprecated) | ETIME | 
| text_file_busy | ETXTBSY | 
| timed_out | ETIMEDOUT | 
| too_many_files_open_in_system | ENFILE | 
| too_many_files_open | EMFILE | 
| too_many_links | EMLINK | 
| too_many_symbolic_link_levels | ELOOP | 
| value_too_large | EOVERFLOW | 
| wrong_protocol_type | EPROTOTYPE | 
| (C++11) | constructs an std::errcerror code(function) | 
| (C++11) | constructs an std::errcerror condition(function) | 
| (C++11) | extends the type trait std::is_error_condition_enumto identifystd::errcvalues as error conditions(function template) | 
#include <iostream>
#include <system_error>
#include <thread>
 
int main()
{
    try
    {
        std::thread().detach(); // detaching a not-a-thread
    }
    catch (const std::system_error& e)
    {
        std::cout << "Caught a system_error\n";
        if (e.code() == std::errc::invalid_argument)
            std::cout << "The error condition is 'std::errc::invalid_argument'\n";
        std::cout << "The error description is '" << e.what() << "'\n";
    }
}Possible output:
Caught a system_error The error condition is 'std::errc::invalid_argument' The error description is 'Invalid argument'
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 3869 | C++11 | the member constants no_message_available,no_stream_resources,not_a_streamandstream_timeoutreferred to the obsolete POSIX STREAMS API[1] | deprecated them | 
| (C++11) | holds a platform-dependent error code (class) | 
| (C++11) | holds a portable error code (class) | 
    © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
    https://en.cppreference.com/w/cpp/error/errc