##### basic_file::basic_file (4 of 10 overloads)

Construct and open a `basic_file`.

    template<
        typename ExecutionContext>
    basic_file(
        ExecutionContext & context,
        const char * path,
        file_base::flags open_flags,
        constraint_t< is_convertible< ExecutionContext &, execution_context & >::value, defaulted_constraint >  = defaulted_constraint());

This constructor initialises a file and opens it.

###### Parameters

context

  An execution context which provides the I/O executor that the file will use, by default, to dispatch handlers for any asynchronous operations performed on the file.

path

  The path name identifying the file to be opened.

open_flags

  A set of flags that determine how the file should be opened.

Exactly one of the following `file_base::flags` values must be specified:

- flags::read_only
- flags::write_only
- flags::read_write

The following flags may be bitwise or-ed in addition:

- flags::append
- flags::create
- flags::exclusive
- flags::truncate
- flags::sync_all_on_write