Date
2021-06-07.16:58:04
Message id
11885

Content

Proposed resolution:

This wording is relative to N4861.

  1. Modify [ifstream], class template basic_ifstream synopsis, as indicated:

    […]
    explicit basic_ifstream(const string& s,
                            ios_base::openmode mode = ios_base::in);
    template<class T>
    explicit basic_ifstream(const filesystem::pathT& s,
                            ios_base::openmode mode = ios_base::in);
    […]
    
  2. Modify [ifstream.cons] as indicated:

    explicit basic_ifstream(const string& s,
                            ios_base::openmode mode = ios_base::in);
    

    -?- Effects: Equivalent to: basic_ifstream(s.c_str(), mode).

    template<class T>
    explicit basic_ifstream(const filesystem::pathT& s,
                            ios_base::openmode mode = ios_base::in);
    

    -?- Constraints: is_same_v<T, filesystem::path> is true.

    -3- Effects: Equivalent to: basic_ifstream(s.c_str(), mode).

  3. Modify [ofstream], class template basic_ofstream synopsis, as indicated:

    […]
    explicit basic_ofstream(const string& s,
                            ios_base::openmode mode = ios_base::out);
    template<class T>
    explicit basic_ofstream(const filesystem::pathT& s,
                            ios_base::openmode mode = ios_base::out);
    […]
    
  4. Modify [ofstream.cons] as indicated:

    explicit basic_ofstream(const string& s,
                            ios_base::openmode mode = ios_base::out);
    

    -?- Effects: Equivalent to: basic_ofstream(s.c_str(), mode).

    template<class T>
    explicit basic_ofstream(const filesystem::pathT& s,
                            ios_base::openmode mode = ios_base::out);
    

    -?- Constraints: is_same_v<T, filesystem::path> is true.

    -3- Effects: Equivalent to: basic_ofstream(s.c_str(), mode).

  5. Modify [fstream], class template basic_fstream synopsis, as indicated:

    […]
    explicit basic_fstream(
      const string& s,
      ios_base::openmode mode = ios_base::in | ios_base::out);
    template<class T>
    explicit basic_fstream(
      const filesystem::pathT& s,
      ios_base::openmode mode = ios_base::in | ios_base::out);
    […]
    
  6. Modify [fstream.cons] as indicated:

    explicit basic_fstream(
      const string& s,
      ios_base::openmode mode = ios_base::in | ios_base::out);
    

    -?- Effects: Equivalent to: basic_fstream(s.c_str(), mode).

    template<class T>
    explicit basic_fstream(
      const filesystem::pathT& s,
      ios_base::openmode mode = ios_base::in | ios_base::out);
    

    -?- Constraints: is_same_v<T, filesystem::path> is true.

    -3- Effects: Equivalent to: basic_fstream(s.c_str(), mode).