Проблема с этим std :: codecvt в том, что это решение ищет проблему. Или, скорее, проблема, которую он пытается решить, неразрешима, поэтому любой, кто попытается использовать его как решение, будет очень разочарован.
Если вы не знаете, какой набор символов используется для ввода или вывода, std :: codecvt никогда не сможет вам помочь. И наоборот, если вы do знаете, какие наборы символов вы используете, то вы можете тривиально преобразовать их в один вызов функции. Оборачивание этого вызова функции в сложную путаницу шаблонов не меняет этих основ.
... и поэтому никто не использует std :: codecvt. Я рекомендую вам просто делать то, что делают все остальные, и делать вид, что этого никогда не было.