Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Мёртвый Даун Россия  
Дата: 26.09.15 16:29
Оценка: 41 (6)
Я так понимаю, это будет С++17? Ну, крута!

Поддержка C++ модулей в Visual Studio 2015 Update 1



На конференции CppCon, которая проходит прямо сейчас, команда разработчиков компилятора Visual C++ заявила, что в следующем обновлении (Visual Studio 2015 Update 1) в компилятор С++ от Microsoft будет добавлена экспериментальная возможность из нового (ещё не утверждённого) стандарта С++ — поддержка модулей!

Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
c++17
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: fdn721  
Дата: 26.09.15 16:53
Оценка: +1 -4 :)
Здравствуйте, Мёртвый Даун, Вы писали:

Поменяли шило на мыло. Да и чую проблем будет вагон и маленькая тележка. Особенно в реализации от индусов из Microsoft.
Re[2]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Abyx Россия  
Дата: 26.09.15 18:09
Оценка:
Здравствуйте, fdn721, Вы писали:

F>Поменяли шило на мыло. Да и чую проблем будет вагон и маленькая тележка. Особенно в реализации от индусов из Microsoft.


Есть N4465, какая разница кто его реализует.
In Zen We Trust
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: 11molniev  
Дата: 26.09.15 19:40
Оценка: +1
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Я так понимаю, это будет С++17? Ну, крута!

МД>На конференции CppCon, которая проходит прямо сейчас, команда разработчиков компилятора Visual C++ заявила, что в следующем обновлении (Visual Studio 2015 Update 1) в компилятор С++ от Microsoft будет добавлена экспериментальная возможность из нового (ещё не утверждённого) стандарта С++ — поддержка модулей!

Такая поспешность и внезапность для такой серьёзной вещи чревата костыльной реализацией, которая через 5-10 лет будет приносить большие проблемы.
Так то оно идея и хорошая, но вот какой окажется реализация мы только увидим.
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: VTT http://vtt.to
Дата: 26.09.15 19:42
Оценка:
А установщик redistributable пакетов они уже починили, или тоже Update1 ждать?
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: UA Украина  
Дата: 27.09.15 11:56
Оценка:
МД>Я так понимаю, это будет С++17? Ну, крута!
МД>

МД>Поддержка C++ модулей в Visual Studio 2015 Update 1


Dll module hell тоже будет?
Re[2]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 30.09.15 11:12
Оценка:
Здравствуйте, UA, Вы писали:

UA>Dll module hell тоже будет?


Судя по всему — да, будет.
И каждый день — без права на ошибку...
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: T4r4sB Россия  
Дата: 30.09.15 11:34
Оценка:
Здравствуйте, Мёртвый Даун, Вы писали:

А шаблоны экспортировать из модуля можно будет?
Re[3]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 30.09.15 11:43
Оценка: 1 (1) -1 :)
Здравствуйте, Abyx, Вы писали:

A>Есть N4465, какая разница кто его реализует.


Что-то я сомневаюсь, что это вообще надо реализовывать.
На вскидку. Зачем нужен этот новый синтаксис:
import std.vector; // #include <vector>

?
Что это за убожество? Зачем import без диеза? Зачем 'std.' префикс?
Почему нельзя написать, например, так:
#include {vector}

Или, если вам, таки, надо префикс (зачем?), так:
#include {std.vector}


Это же относится к "export" и "module".

Там есть ровно две заслуживающие внимания здравые идеи:
1. включение файла изолированного от распространения макросов.
2. Template explicit specializations. Это верный шаг в направлении поддержки шаблонных виртуальных функций.

Всё остальное — либо лажа, либо внутренняя кухня компилятора, которая может быть реализована в рамках текущего стандарта.
И каждый день — без права на ошибку...
Re[2]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 30.09.15 12:49
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>А шаблоны экспортировать из модуля можно будет?


Да, но если шаблон параметризован чем-то, о чем модуль не знает, то результат будет принадлежать текущей единице трансляции.
И каждый день — без права на ошибку...
Re[4]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Went  
Дата: 30.09.15 16:02
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:
BFE>Что это за убожество? Зачем import без диеза?
Потому что это не функция препроцессора.
Re[5]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 30.09.15 16:26
Оценка:
Здравствуйте, Went, Вы писали:

BFE>>Что это за убожество? Зачем import без диеза?

W>Потому что это не функция препроцессора.

И что? Из-за этого надо вводить чуждый синтаксис? Препроцессору ничто не мешает игнорировать эту конструкцию.
И каждый день — без права на ошибку...
Re[6]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Went  
Дата: 30.09.15 17:07
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>И что? Из-за этого надо вводить чуждый синтаксис?

Почему он чуждый? Обычное ключевое слово. Новое, но рядовое ключевое слово. Почему вложенные модули через точку, а не через двойное двоеточие? Ну, наверное, чтобы как-то указать, что модули это не пространства имен, а вещи, им перпендикулярные.

BFE>Препроцессору ничто не мешает игнорировать эту конструкцию.

Директива препроцессора (визуально), которая игнорируется препроцессором? При том, что остальные новые ключевые слова диез не подразумевают?

Но в целом я с вами солидарен. Предложенное решение выглядит подозрительно. А если учесть, какой длинный путь такому решению потребуется до внедрения в массы, то вообще труба. Параллельно конкурирующие друг с другом модули и инклуды, боюсь, вообще мозги выносить будут. Слишком длинный это шаг, слишком много он поломает.
Отредактировано 30.09.2015 17:11 Went . Предыдущая версия .
Re[7]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 30.09.15 18:05
Оценка: -1
Здравствуйте, Went, Вы писали:

BFE>>И что? Из-за этого надо вводить чуждый синтаксис?

W>Почему он чуждый? Обычное ключевое слово. Новое, но рядовое ключевое слово.

Новые ключевые слова в язык вводить сложно. Что, если есть класс:
class import {...};

тогда
import specialvector;

это просто глобальная переменная...

W>Почему вложенные модули через точку, а не через двойное двоеточие? Ну, наверное, чтобы как-то указать, что модули это не пространства имен, а вещи, им перпендикулярные.


Я думаю, авторы просто списывали синтаксис с другого языка. Не подумав.

BFE>>Препроцессору ничто не мешает игнорировать эту конструкцию.

W>Директива препроцессора (визуально), которая игнорируется препроцессором? При том, что остальные новые ключевые слова диез не подразумевают?
Может не игнорироваться, может включать модуль (чтобы это действие не означало). Не суть.

W>Но в целом я с вами солидарен. Предложенное решение выглядит подозрительно. А если учесть, какой длинный путь такому решению потребуется до внедрения в массы, то вообще труба. Параллельно конкурирующие друг с другом модули и инклуды, боюсь, вообще мозги выносить будут. Слишком длинный это шаг, слишком много он поломает.


Мне вообще идея модулей кажется несколько странной в том виде, в котором она предложена. Это слишком сильно похоже на систему управления precompiled хеадерами. Ну, а если это precompiled хеадер'ы, то к чему весь этот огород? Скомпилируйте h-файл в промежуточный формат и сделайте изолированное от макросов подключение. Будет ровно то же самое.
И каждый день — без права на ошибку...
Re[8]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Went  
Дата: 30.09.15 18:56
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:
BFE>Мне вообще идея модулей кажется несколько странной в том виде, в котором она предложена. Это слишком сильно похоже на систему управления precompiled хеадерами. Ну, а если это precompiled хеадер'ы, то к чему весь этот огород? Скомпилируйте h-файл в промежуточный формат и сделайте изолированное от макросов подключение. Будет ровно то же самое.
Да, не сильно вдумываясь в детали, мне тоже кажется, что достаточно было ввести новый формат "модуль", в котором будет либа + скомпилированные заголовоки. И чтобы этот модуль можно было подключать как статически, так и динамически. То есть:
1. Таргет компилятора "модуль". Модуль может быть как полностью скомпилированным в машинный код, так и "кроссплатформенным", содержащим "сырой код" в какой-то удобной для компилятора форме.
2. Более мощная система изолирования реализаций в заголовочных файлах. Чтобы можно было указать что именно экспортирует этот модуль, а что он вытянул для своей реализации.
3. Директива препроцессора #import "blablalba.cm" — раскрывается во включение необходимых (скомпилированных) заголовков + некий аналог #pragma comment(lib...), подключающий тело модуля при линковке.
4. Директива препроцессора #include "blablalba.cm" — раскрывается только во включение заголовоков без подключения, давая возможность подключить указанный модуль через какой-то вызов стандартной библиотеки std::import("blablalba.cm"). Также вынести в стандарт поиск функций в модулях по именам. Например:
void main()
{
  auto module = std::import("module.cm");
  auto create_object = module.function<Object(void)>("create_object");
  auto object = create_object();
}

5. Новые скобки для включения, например #import [stl.vector], если потребуется новый способ искать модули в каком-то "стандартизированном" менеджере пакетов. Позволяющий писать и #include [stl.vector], если хочется подключить заголовок по-старинке без затягивания кода.
Хотя, все это выходит довольно похожим на предложенное Майкрософтом
Re[4]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Abyx Россия  
Дата: 30.09.15 20:37
Оценка:
Здравствуйте, B0FEE664, Вы писали:

A>>Есть N4465, какая разница кто его реализует.


BFE>Что-то я сомневаюсь, что это вообще надо реализовывать.

BFE>На вскидку. Зачем нужен этот новый синтаксис:
BFE>
BFE>import std.vector; // #include <vector>
BFE>

BFE>?
BFE>Что это за убожество? Зачем import без диеза? Зачем 'std.' префикс?

#import сломает существующие препроцессоры (препроцессор бывает внешним, а не встроенным в компилятор).
директива import к препроцессору отношения не имеет, ей незачем иметь #

'std.' нужен очевидно потому что это пространство имен (в широком смысле слова).
чтобы не путать std.vector с boost.vector, llvm.adt.vector, mylib.vector и т.п.

BFE>Почему нельзя написать, например, так:

BFE>[ccode]
BFE>#include {vector}
почему фигурные скобки? что за убожество? нравится шифт нажимать?
In Zen We Trust
Re[9]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Abyx Россия  
Дата: 30.09.15 20:43
Оценка: +1
Здравствуйте, Went, Вы писали:

W>Хотя, все это выходит довольно похожим на предложенное Майкрософтом


это не "предложенное Майкрософтом", а результат работы всей SG2.
это всеравно что сказать что С++11/14/1z придумала майкрософт, потому что Саттер — председатель комитета по стандартизации.
In Zen We Trust
Re[5]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 30.09.15 21:05
Оценка:
Здравствуйте, Abyx, Вы писали:

BFE>>Что это за убожество? Зачем import без диеза? Зачем 'std.' префикс?


A>#import сломает существующие препроцессоры (препроцессор бывает внешним, а не встроенным в компилятор).

A>директива import к препроцессору отношения не имеет, ей незачем иметь #

А типов import, export и module в глобальном пространстве никаких исходников никогда не встречается?

A>'std.' нужен очевидно потому что это пространство имен (в широком смысле слова).

A>чтобы не путать std.vector с boost.vector, llvm.adt.vector, mylib.vector и т.п.

Это не пространство имён, а название модуля. Зачем std. префикс, если у стандартных инклюдов его нет:
Смотрите, никакой путаницы нет:
#include <array>
#include <boost/array>



BFE>>Почему нельзя написать, например, так:

BFE>>[ccode]
BFE>>#include {vector}
A>почему фигурные скобки?

Фигурные скобки, потому, что сейчас они не могут там встречаться, а значит не поломают синтаксис. По смыслу подходят.

A>что за убожество?

Предложите лучше.

A>нравится шифт нажимать?

Французы, например, правый альт жмут, чтобы фигурные скобки набрать — и ничего, не жалуются.
И каждый день — без права на ошибку...
Re[6]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Abyx Россия  
Дата: 30.09.15 22:26
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>А типов import, export и module в глобальном пространстве никаких исходников никогда не встречается?


если каждый модуль имеет свое пространство имен (а так и должно быть), то "import foo.bar;" это не валидный синтаксис
и если все директивы import в начале единицы трансляции, то там не будет никаких struct import;

A>>'std.' нужен очевидно потому что это пространство имен (в широком смысле слова).

A>>чтобы не путать std.vector с boost.vector, llvm.adt.vector, mylib.vector и т.п.

BFE>Это не пространство имён, а название модуля. Зачем std. префикс, если у стандартных инклюдов его нет:

BFE>Смотрите, никакой путаницы нет:
BFE>
BFE>#include <array>
BFE>#include <boost/array>
BFE>

то что все стандартные заголовочные файлы засунуты в папку первого уровня — это историческая ошибка. лучше бы они были <std/vector>
In Zen We Trust
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: CEMb  
Дата: 02.10.15 03:34
Оценка:
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Я так понимаю, это будет С++17? Ну, крута!


а бета уже есть? где можно попробовать?

upd.ps: сижу на работе, вокруг целая армия яверов, я один с++, даже радостно поделиться не с кем
Отредактировано 02.10.2015 3:50 CEMb . Предыдущая версия .
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: consign  
Дата: 02.10.15 05:14
Оценка:
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Я так понимаю, это будет С++17? Ну, крута!


А какие есть еще данные, кроме этой фотографии?
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: enji  
Дата: 02.10.15 06:10
Оценка:
Здравствуйте, Мёртвый Даун, Вы писали:

МД>

МД>

Поддержка C++ модулей в Visual Studio 2015 Update 1


А как это вообще будет реализовано на практике? Это будет некий аналог статической библиотеки (в файл которой будет дополнительно встроен интерфейс модуля в некотором предкомпилированном формате)?

А что будет в случае, когда два модуля зависят друг от друга? При компиляции первого надо будет как-то сослаться на интерфейсную часть второго (который еще не скомпилирован)?
Re[8]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: x-code  
Дата: 02.10.15 08:21
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Новые ключевые слова в язык вводить сложно. Что, если есть класс:

BFE>
BFE>class import {...};
BFE>

BFE>тогда
BFE>
BFE>import specialvector; 
BFE>

BFE>это просто глобальная переменная...

Ну и что? Возьмите и сделайте глобальную замену в вашем коде. Займет пару минут от силы.
Это лучше чем строить костыли на костылях из существующих ключевых слов или городить двойные и тройные подчеркивания перед ключевыми словами.
Re[9]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 02.10.15 09:01
Оценка: +1
Здравствуйте, x-code, Вы писали:

BFE>>Новые ключевые слова в язык вводить сложно. Что, если есть класс:

BFE>>
BFE>>class import {...};
BFE>>

BFE>>тогда
BFE>>
BFE>>import specialvector; 
BFE>>

BFE>>это просто глобальная переменная...

XC>Ну и что? Возьмите и сделайте глобальную замену в вашем коде. Займет пару минут от силы.

В своём-то я сделаю, но обычно проблемы возникают с библиотеками.

XC>Это лучше чем строить костыли на костылях из существующих ключевых слов или городить двойные и тройные подчеркивания перед ключевыми словами.

Не факт.
Ну и потом, мне больше не нравится чуждый языку синтаксис, чем введение новых ключевых слов.
Ввели же, например, для лямбды свой синтаксис — и он успешно вписался в язык, а ведь могли бы вместо [y](int a){ return a + y; } ввести ключевое слово lambda(y, int a){ return a + y; }? Могли. Но не ввели же. И это правильно.
Вот и тут так же.

PS Кстати, в пропазле предлагается альтернатива:
using module module-name ;


Так я могу принять. Но не import.
И каждый день — без права на ошибку...
Отредактировано 02.10.2015 9:12 B0FEE664 . Предыдущая версия .
Re[7]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 02.10.15 09:20
Оценка:
Здравствуйте, Abyx, Вы писали:

BFE>>А типов import, export и module в глобальном пространстве никаких исходников никогда не встречается?


A>если каждый модуль имеет свое пространство имен (а так и должно быть),

И где гарантии, что так и будет?
A>то "import foo.bar;" это не валидный синтаксис
это я не понял. Почему невалидный?
Наименование модулей и их namespace'ов никак не согласованы.

Does a module definition implicitly establish a namespace? No, a module definition
does not establish any namespace; and no particular syntax is needed to
access a name made accessible by an import declaration.


A>и если все директивы import в начале единицы трансляции, то там не будет никаких struct import;


Кстати, почему import может встречаться только в глобальном пространстве? Почему нельзя написать:
namespace Abc
{
  import vector;
};

Зачем этот запрет?

Вот представьте, что я приобрёл два модуля и у них совпадают внутренние имена namespace'ов. И что мне делать?
И каждый день — без права на ошибку...
Re[10]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Went  
Дата: 02.10.15 09:23
Оценка: +3
Здравствуйте, B0FEE664, Вы писали:

BFE>PS Кстати, в пропазле предлагается альтернатива:

BFE>
BFE>using module module-name ;
BFE>


Кстати, да, так лучше.
Re: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: swingus  
Дата: 03.10.15 23:39
Оценка:
Я так понимаю, по скорости от precompiled headers это отличаться не будет

Здравствуйте, Мёртвый Даун, Вы писали:

МД>

МД>

Поддержка C++ модулей в Visual Studio 2015 Update 1

Re[2]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Abyx Россия  
Дата: 04.10.15 11:02
Оценка: +1
Здравствуйте, swingus, Вы писали:

S>Я так понимаю, по скорости от precompiled headers это отличаться не будет


будет.
precompiled headers прекомпилируются все вместе, а модули — каждый по отдельности.
в precompiled headers попадает гораздо больше кода, чем в экспортируемую часть модуля
In Zen We Trust
Re[2]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: MasterZiv СССР  
Дата: 07.10.15 13:57
Оценка: :)
Здравствуйте, 11molniev, Вы писали:

1>Так то оно идея и хорошая, но вот какой окажется реализация мы только увидим.


Я совершенно уверен, что идея -- плохая. Вообще не надо ничего трогать в С++ в модулях.
Re[3]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: aloch Россия  
Дата: 07.10.15 19:32
Оценка:
Здравствуйте, Abyx, Вы писали:

A>в precompiled headers попадает гораздо больше кода, чем в экспортируемую часть модуля


Да, например, все #define ... , заданные в заголовках модуля, не будут "видны" в использующем модуль коде (в отличие от pch)


Re[3]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: 11molniev  
Дата: 07.10.15 19:48
Оценка: +2
Здравствуйте, MasterZiv, Вы писали:

1>>Так то оно идея и хорошая, но вот какой окажется реализация мы только увидим.


MZ>Я совершенно уверен, что идея -- плохая. Вообще не надо ничего трогать в С++ в модулях.


Я хоть и плохо отношусь ко ряду нововведений в C++, но потихоньку надо двигаться дальше.
Ну и сборка проектов с модулями (C#, Java) это я скажу здорово. Немного удобней, немного быстрей, чуть более внятные ошибки. Разница вроде и не особо критичная, но это как вывод ошибок gcc и clang — две большие разницы.
Re[8]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: enji  
Дата: 08.10.15 06:33
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>
BFE>namespace Abc
BFE>{
BFE>  import vector;
BFE>};
BFE>

BFE>Зачем этот запрет?

А смысл так писать? модули не добавляют ничего к правилам разрешения имен.

BFE>Вот представьте, что я приобрёл два модуля и у них совпадают внутренние имена namespace'ов. И что мне делать?


Ровно тоже, что ты делал раньше, приобретя два хидера с совпадающими именами. Делаешь третий модуль, в котором маскируешь интерфейс второго
Re[3]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: enji  
Дата: 08.10.15 06:34
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Я совершенно уверен, что идея -- плохая. Вообще не надо ничего трогать в С++ в модулях.


как можно тронуть то, чего (практически) нет? А почему идея плохая?
Отредактировано 08.10.2015 6:35 enji . Предыдущая версия .
Re[9]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: B0FEE664  
Дата: 08.10.15 08:54
Оценка:
Здравствуйте, enji, Вы писали:

BFE>>
BFE>>namespace Abc
BFE>>{
BFE>>  import vector;
BFE>>};
BFE>>

BFE>>Зачем этот запрет?
E>А смысл так писать? модули не добавляют ничего к правилам разрешения имен.
Вот именно, что не добавляют, а иногда хочется добавить.

BFE>>Вот представьте, что я приобрёл два модуля и у них совпадают внутренние имена namespace'ов. И что мне делать?

E>Ровно тоже, что ты делал раньше, приобретя два хидера с совпадающими именами.
У меня есть хедеры с совпадающими именами, но у них разные пути, так что проблемы нет.

E>Делаешь третий модуль, в котором маскируешь интерфейс второго

Каким образом, если я не могу обернуть модуль в namespace ?
И каждый день — без права на ошибку...
Re[10]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: enji  
Дата: 08.10.15 09:59
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Вот именно, что не добавляют, а иногда хочется добавить.


Ну собственно идут маленькими шагами Сначала просто модули, затем еще что-нить

BFE>>>Вот представьте, что я приобрёл два модуля и у них совпадают внутренние имена namespace'ов. И что мне делать?

E>>Ровно тоже, что ты делал раньше, приобретя два хидера с совпадающими именами.
BFE>У меня есть хедеры с совпадающими именами, но у них разные пути, так что проблемы нет.

Я имел в виду совпадающие имена верхнего уровня в самих хидерах. Вроде одинаковых имен namespace. Что касается модулей с одинаковыми именами — то хз, как сделают. Может быть будет возможность добавить путь. А может просто запретят и будет как в яве — com.mycompany.mymodule

E>>Делаешь третий модуль, в котором маскируешь интерфейс второго

BFE>Каким образом, если я не могу обернуть модуль в namespace ?

Пусть модули A и B имеют функцию с именем f(). Делаешь модуль C, импортишь в него модуль B, пишешь там функцию С_f(), в реализации которой зовешь f() из B. Собственно если в двух разных хидерах будет одно имя функции — поведение аналогично...
Re: C++ Modules in VS 2015 Update 1
От: flаt  
Дата: 04.12.15 21:49
Оценка:
Недавно выпустили update1, заодно и в статье расписали немного о текущей реализации: C++ Modules in VS 2015 Update 1.
Re[11]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Константин Россия  
Дата: 05.12.15 01:51
Оценка:
Здравствуйте, Went, Вы писали:

BFE>>
BFE>>using module module-name ;
BFE>>

W>Кстати, да, так лучше.

IMO, это Стокгольмский синдром. using уже сильно перегружен, а с таким синтаксисом будет совсем жесть
using namespace std;
using std::vector;
using something = std::vector<int>;
using module std.vector;
Re[5]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 07.12.15 11:24
Оценка:
Здравствуйте, Abyx, Вы писали:

A>'std.' нужен очевидно потому что это пространство имен (в широком смысле слова).

A>чтобы не путать std.vector с boost.vector, llvm.adt.vector, mylib.vector и т.п.
Как модули будут разворачиваться, подключаться и распространяться ты в курсе? Что там будет с АБИ? Как будет с crt, версионностью?
Sic luceat lux!
Re[6]: Поддержка C++ модулей в Visual Studio 2015 Update 1
От: Abyx Россия  
Дата: 07.12.15 13:41
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, Abyx, Вы писали:


A>>'std.' нужен очевидно потому что это пространство имен (в широком смысле слова).

A>>чтобы не путать std.vector с boost.vector, llvm.adt.vector, mylib.vector и т.п.
K>Как модули будут разворачиваться, подключаться и распространяться ты в курсе? Что там будет с АБИ? Как будет с crt, версионностью?

стандарт ничего из этого не специфицирует.

в реализации от MS используется что-то вроде сериализованного AST.
и если что, ни о каких динамических модулях речь не идет. не надо путать модули С++ и dll/so
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.