При определении фрагмента частного модуля для модуля C++20
, похоже, не может быть определена в пространстве имен. В результате я обнаружил, что мне приходится несколько раз вводить свое пространство имен в однофайловом модуле C++20, чтобы строка модуля :private; не находилась в пространстве имен. Это требует дополнительного ввода текста, добавляет строки в код и может привести к опечаткам:
Код: Выделить всё
export module Foo.Bar;
namespace Foo
{
export class Bar
{
...
}
}
module :private;
namespace Foo
{
...Implementation details
}
Исходя из C#, мне нравится простота одного файла и разделение интерфейса и реализации, но, учитывая, что я определенно хочу, чтобы этот класс был определен в пространстве имен, есть ли способ избежать необходимости вводить пространство имен дважды?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... e-fragment