std::experimental::filesystem::u8path
From cppreference.com
                    
                                        
                    < cpp | experimental/fs | path
                    
                                                            
                    | template< class Source > path u8path( const Source& source ); | (1) | (filesystem TS) | 
| template< class InputIt > path u8path( InputIt first, InputIt last ); | (2) | (filesystem TS) | 
Creates an UTF-8 path from the given UTF-8 encoded char-based sources.
If value_type is char and the current native narrow encoding is UTF-8, returns path(source) or path(begin, end).
Otherwise, if value_type is wchar_t and the native wide encoding is UTF-16, or if value_type is char16_t or char32_t, converts source or the range [first, last) to a temporary value of type string_type and returns a path constructed from that value.
Otherwise, converts source or the range [first, last) to a temporary value of type std::u32string and returns a path constructed from that value.
| This section is incomplete Reason: argument format conversion | 
It is unspecified how Unicode encoding conversions are performed.
[edit] Parameters
| source | - | a character sequence to construct the path from. 
 | ||
| first, last | - | a range to construct the path from. 
 | ||
| Type requirements | ||||
| - InputItmust meet the requirements ofInputIterator. | ||||
| -The value type of InputItmust be one of the encoded character types (char, wchar_t, char16_t and char32_t) | ||||
[edit] Return value
A newly constructed UTF-8 encoded path.
[edit] Exceptions
(none)