@ProCxx

Страница 984 из 2477
Aidar
20.06.2017
13:33:47
в любом случае нужно забить

Constantine
20.06.2017
13:34:07
мне вот говорят, что это ill-formed

Aidar
20.06.2017
13:34:16
кто конкретно

[](){} объект - функтор неизвестного типа

Google
Aidar
20.06.2017
13:34:35
все

Constantine
20.06.2017
13:34:36
ну наличие ODR violation делает программу ill-formed

Aidar
20.06.2017
13:34:51
скомпиль другим компилятором

Constantine
20.06.2017
13:34:56
или обращения к классу, забыл

или ты про пример

Anatoly
20.06.2017
13:35:28
почему?
почему это бага анализатора? хз, поскольку здесь нет нарушения ODR

Aidar
20.06.2017
13:35:45
Constantine
20.06.2017
13:44:39
почему это бага анализатора? хз, поскольку здесь нет нарушения ODR
я категорически не уверен, что линкер может ошибиться в определении ODR violation

Anatoly
20.06.2017
13:46:01
я категорически не уверен, что линкер может ошибиться в определении ODR violation
ну обычно такие утверждения должны ссылаться на конкретный пункт стандарта, который нарушается в данном случае

я такого пункта найти не могу

может Антон поможет

Google
Aidar
20.06.2017
13:46:47
@antoshkka

Constantine
20.06.2017
13:46:50
и у меня нет ни малейшей идеи, как это гуглить

Anatoly
20.06.2017
13:47:15
да здесь не гуглить, здесь штудировать стандарт надо

Alexander
20.06.2017
13:51:17
Завтра начинается МИНИ ревью новой сортировки в Boost.Sort : pdqsort

The (mini) review for pdqsort will start tomorrow 6/21, and run through 6/30. I will manage the review; Orson Peters is the author. The proposed boost source is here: https://gist.github.com/orlp/24f27aada1ed724d1809b372c33eb92e Documentation is here: https://github.com/orlp/pdqsort#pdqsort And a draft paper is here: https://drive.google.com/open?id=0B1-vl-dPgKm_T0Fxeno1a0lGT0E If you're interested, please answer these questions: 1. Are there any specific concerns you have about pdqsort vs. std::sort? 2. Does it compile for you when you try to use it as a replacement for std::sort? 3. How does the performance compare on your system vs. std::sort? 4. Do you think we should include pdqsort in Boost.Sort? 5. Do you have any concerns about switching the default/fallback sort in Boost libraries (including Boost.Sort) from std::sort to pdqsort?

кто хочет помочь, что сделайте ревью, плиз и зашлите результат в boost mailing list

Anatoly
20.06.2017
14:00:07
линкер утверждает, что вот эта строка модифицирует определение типа Around::SomeStruct Around::SomeStruct::SomeStruct() : b([]() {})
реализация конструктора в данном случае не является часть определения класса, это отдельно вынесенная реализация конструктора класса, на которую накладывается свое правило ODR

Mikhail
20.06.2017
14:31:12
А что у нас, cmake не умеет precompiled headers?

не могу найти как выставить

Дед Пегас
20.06.2017
14:31:41
Через жопу умеет.

Оно ж копилезависимое.

Mikhail
20.06.2017
14:32:59
мда

Дед Пегас
20.06.2017
14:33:02
Советую опробовать вот это: https://github.com/sakra/cotire

Оно там обмазано и включеня все эти PH.

Mikhail
20.06.2017
14:36:25
ну что сказать, я удивлен конечно

Anatoly
20.06.2017
14:37:44
А что у нас, cmake не умеет precompiled headers?
stdafx.cpp должен быть помечен как создающий pch set_source_files_properties(stdafx.cpp PROPERTIES COMPILE_FLAGS "/Yc\"${THIS_LIB_PCH}\"" ) а все исходные файлы, что используют pch должны его включить set_source_files_properties(${source} PROPERTIES COMPILE_FLAGS "/Yu\"${THIS_LIB_PCH}\"" )

вместо ${THIS_LIB_PCH} имя твоего проекта

Mikhail
20.06.2017
14:38:46
Да, спасибо

выглядит как костыль конечно и нужно будет переделывать cmake проект

так что пока забью :)

Google
Anatoly
20.06.2017
14:39:30
чтобы не страдать, мы написали свою макро обвязку

rolis_library( smartcard COMPILE_FLAGS -D_AFXDLL -D_MBCS -DROLIS_SMARTCARD_EXPORTS SOURCES ${rolis_SOURCE_DIR}/rolis/SmartCard.h SmartCard.cpp StdAfx.h PCH StdAfx.h PCH_SOURCE StdAfx.cpp DEPENDS subclass LINK_LIBS winscard rpcrt4 MFC )

ну а уже в макросе обрабатываем как нам требуется PCH

Anatoly
20.06.2017
14:42:03
нет, написали макрос который внутри делает всю грязную работу

теже set_source_files_properties только внутри макроса

Дед Пегас
20.06.2017
14:43:18
А можно взять cotire)

Anatoly
20.06.2017
14:44:44
наверняка cotire это делает лучше, поскольку поддерживает все современные компиляторы

Дед Пегас
20.06.2017
14:45:07
Да, потому и советую.

Anatoly
20.06.2017
14:45:59
я хотел лишь показать, что ничего под катом волшебного нет

Дед Пегас
20.06.2017
14:46:19
Справедливо!

Constantine
20.06.2017
14:47:55
Нарушает ли лямбда, объявленная в inline шаблонной функции и замыкающая ее параметры, правило ODR?

template <typename T> inline std::function<void()> f(T* object) { return [object](){}; }

Aidar
20.06.2017
14:52:24
да как лямбда может нарушать ODR?

у каждой отдельно взятой лямбды свой тип

Berkus
20.06.2017
14:54:03
Constantine
20.06.2017
14:54:21
A type defined within the body of an extern inline function is the same type in every translation unit.

Google
Aidar
20.06.2017
14:54:38
ну значит он один

(у тебя там шаблон, если ты об этом, для каждого инстанса шаблона будет свой тип лямбды)

Berkus
20.06.2017
14:56:05
так что пока забью :)
cotire ставится с полпинка и работает со всеми компиляторами

Berkus
20.06.2017
14:57:01
ну может быть попробую
если будут вопросы - задавай, я у себя использую

Anatoly
20.06.2017
15:05:58
конечно, да

хотя, не понятно откуда вопрос. [](){} - это лямбда выражение, как если бы ты написал 1+1

что здесь definition?

Admin
ERROR: S client not available

Constantine
20.06.2017
15:09:17
это лямбда-выражение является объектом некоторого типа

Anatoly
20.06.2017
15:10:27
и?

1+1 тоже выражение некоторого типа

Constantine
20.06.2017
15:10:57
An inline function shall be defined in every translation unit in which it is odr-used and shall have exactly the same definition in every case

Aidar
20.06.2017
15:10:58
и?
ну тут на самом деле есть дефинишн

у тебя блин шаблон

Aidar
20.06.2017
15:11:34
втопку инлайн

Constantine
20.06.2017
15:13:17
почему бы компилятору не генерировать лямбду независимо от шаблонных параметров содержащих её функцию?

Google
Anatoly
20.06.2017
15:13:42
по определению инстанцирования шаблона

Aidar
20.06.2017
15:13:48
это не функция

это шаблон функции

Constantine
20.06.2017
15:14:37
хорошо, при инстанцировании шаблона почему бы компилятору не сгенерировать имя типа для лямбды как lambda_generatedN

после чего не заявить, что в разных модулях компиляции это имя генерируется по-разному

поэтому реализация функции нарушает правило ODR

Anatoly
20.06.2017
15:15:42
потому что тело инстанцированного шаблона фукнции гарантирует уникальность определенных в нем типов, если бы они были

Constantine
20.06.2017
15:16:35
уникальности недостаточно

Anatoly
20.06.2017
15:16:46
все что справедливо для класса/функции, будет справедливо и для инстанцированных шаблонов класса/функции

Constantine
20.06.2017
15:16:49
нужно еще единообразие между модулями компиляции

Berkus
20.06.2017
15:17:03
модули компиляции вообще могут каждый со своими флагами собираться

Constantine
20.06.2017
15:17:28
потому что в противном случае заданная шаблонная функция ill-formed, поскольку в разных модулях компиляции будет сгенерирована разная ее реализация

Berkus
20.06.2017
15:17:46
это будут разные шаблонные функции

Anatoly
20.06.2017
15:18:20
но нет, они везде одни и теже

поэтому ODR не нарушается

Constantine
20.06.2017
15:18:46
и я тут перепроверил, компилятор MSC 14 уверен, что этот код нарушает ODR

Igor
20.06.2017
15:18:51
это будут разные шаблонные функции
, с одинаковыми сигнатурами, и это было бы ill-formed, разве нет?

Berkus
20.06.2017
15:19:25
и я тут перепроверил, компилятор MSC 14 уверен, что этот код нарушает ODR
msvc вообще не очень хорошо с++ умеет, так что делай скидку

Anatoly
20.06.2017
15:19:41
, с одинаковыми сигнатурами, и это было бы ill-formed, разве нет?
для шаблонов не требуется, компилятор выбросит лишние инстансы и оставит один

Страница 984 из 2477