@ProCxx

Страница 2115 из 2477
Assasin
06.06.2018
06:23:16
Где то статья новая вышла?

Ilia
06.06.2018
06:35:07
Парни, вопрос. Почему codec-и задеприкейтили? Чем не устраивали?

Anatoly
06.06.2018
06:55:16
Парни, вопрос. Почему codec-и задеприкейтили? Чем не устраивали?
Можешь пользоваться, пока не стандартизована замена. А почему отказались здесь: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0618r0.html

Aleksandr
06.06.2018
10:02:46
привет. есть примерно такой код #include <iostream> #include <type_traits> template <typename T> struct Hold { Hold() = default; Hold(const Hold & other) = default; Hold(const T & value) : m_value(value) { std::cout << "ABC\n"; } template <class U, class = typename std::enable_if<std::is_convertible<U, T>::value>::type> explicit Hold(const U & other) : m_value(other) { std::cout << "DEF\n"; } friend std::ostream & operator << (std::ostream & strm, const Hold & v) { return strm << v.m_value; } private: T m_value; }; using IntHold = Hold<int>; void test(IntHold ih) { std::cout << ih << std::endl; } int main() { int i = 12; test(i); test(true); test(123.4); return 0; } в текущем варианте (и даже если убрать enable_if) всегда вызывается не-шаблонный конструктор. хочется, чтобы когда test вызывался именно от того типа, который держит Hold, вызывался не-explicit конструктор, но если вызывается не от того типа, то юзер явно должен сказать, что он понимает что делает и явно вызвал каст или сам сконструировал объект. можно ли такого добиться не изменяя метод test()?

Google
Aleksandr
06.06.2018
10:03:58
аналоги метода test() раскиданы по всему коду, и хочется убедится, что никаких таких нежелательных кастов не происходит

Constantine
06.06.2018
10:07:11
в данном случае речь идет о преобразовании типа, а не о явном вызове конструктора

Aleksandr
06.06.2018
10:09:12
почему такое происходит - понятно. вопрос - можно ли добиться желаемого поведения?

Spoonson
06.06.2018
10:09:46
можно попробовать на обычный конструктор повесить enable_if на is_same, но наверное есть получше методы

Constantine
06.06.2018
10:11:08
а, не сработает, понял

Aleksandr
06.06.2018
10:15:58
template <class U, class = void> Hold(const U & other) = delete;
ну вообще, это более-менее решение, просто удалить все конструкторы от других типов. но хочется чтобы можно было писать так в случаях других типов: test(HoldInt(true)) а не test(static_cast<int>( true) ) но если лучше не найдётся варианта, то вполне рабочий вариант, спасибо

Spoonson
06.06.2018
10:18:13
на обычный не повесить, is_same-то чего с чем делать?
ну, я имел ввиду зафигачить из обычного тоже шаблон, и выключить его всегда если типы не идеально совпадают

Aleksandr
06.06.2018
10:19:13
это можно разрулить перегрузкой test
проблема в том, что методы, аналогичные test раскиданы по всему коду в большом количестве

ладно, вообще бэкграунд вопроса убедиться, что нигде нежелательных кастов не происходит в коде. удаление от остальных типов её решает, спасибо ещё раз

Google
Constantine
06.06.2018
10:21:54
вообще прочитайте внимательно правила разрешения перегрузки, может быть там есть что-то что различит вызовы

вроде еще можно сделать template <class U> Hold(const U & other) : m_value(other) и проверить, что либо U это точный тип, либо явный другой прокси тип

Spoonson
06.06.2018
10:24:25
на обычный не повесить, is_same-то чего с чем делать?
https://ideone.com/dBAecv что-то вроде такого

Constantine
06.06.2018
10:27:19
можно просто int = 0

Spoonson
06.06.2018
10:28:11
возможно, можно как-нибудь вообще без него, но я не знаю как

Constantine
06.06.2018
10:28:29
я пробовал без него, это будут равнозначные перегрузки

Aleksandr
06.06.2018
10:28:42
https://ideone.com/dBAecv что-то вроде такого
отлично, то что надо! про дефолт аргумент я не подумал

Constantine
06.06.2018
10:29:19
тут проще

можно сказать is_convertible && !is_same

ed
06.06.2018
10:52:27
MS таки выкупил Github - уже обсуждали?

Дед Пегас
06.06.2018
10:56:43
Вот щас бы обсуждать это в плюсоконфе.

ed
06.06.2018
11:15:07
Ну и пожалуйста, ну и не нужно :<

Constantine
06.06.2018
11:20:25
го в холиварку

Alexander
06.06.2018
12:03:02
Юра Незнанов
06.06.2018
12:38:40
привет! Хелп! как в винде получить имя процесса. пид и хендлы достал, но имена функциями GetProcessImageFileName и QueryFullProcessImageName не у всех процессов достаются... Че делать?



ed
06.06.2018
12:40:02
Google
Юра Незнанов
06.06.2018
12:41:57
там корреляции с 32/64 нет?)
хз... там вот в чем трабла может быть: чтобы получить хендл по пиду нужно сделать OpenProcess(PROCESS_QUERY_INFORMATION...). У системных процессов эта функция не прокатывает (пишет что не хватает прав на использование PROCESS_QUERY_INFORMATION)

Denis
06.06.2018
14:33:59
Советую посмотреть исходники processhacker

https://processhacker.sourceforge.io

А как ты справился с проблемой получения хэндлов пайпов?

Alex Фэils?︙
06.06.2018
17:22:19
Sheldon
06.06.2018
19:05:45
где можно свои (опенсурс) конан-пекеджи хостить?

Grigor
06.06.2018
19:07:14
@zamazan4ik

Roman
06.06.2018
19:12:30
а конан это теперь некий условный стандарт? это удобно?

Sheldon
06.06.2018
19:21:53
bintray.com
Оно как я понял не бесплатное.

Разобрался, там для опенсурса "отдельная" регистрация https://bintray.com/signup/oss

FailsBot
06.06.2018
21:16:15
моя любимая методология программирования - "а давайте запихнем в приложение браузер и напишем все на js"

Alex Фэils?︙
06.06.2018
21:23:48
Так автор цитаты раньше там работал

Vyacheslav
06.06.2018
21:29:23
Лол

Alexander
06.06.2018
22:45:29
Разобрался, там для опенсурса "отдельная" регистрация https://bintray.com/signup/oss
Да. Ну и конечно можно поднимать свой conan_server, но мороки больше будет :-)

Antony
07.06.2018
07:45:11
Приятно общаться с вежливыми людьми! Ребята и девчёнки, а давайте его на С++ перетащим. К нам, в чатик :)

Antony
07.06.2018
07:55:40
Тут внезапно второй день обсуждения модулей намечается, вместо обсуждения constexpr контейнеров

Anatoly
07.06.2018
07:59:18
Тебе там в Рапперсвиле совсем скучно? :)
Вежливости не хватает Антоше, вон видишь, даже парня с нэта хочет перетащить

Google
Antony
07.06.2018
07:59:54
Тут внезапно второй день обсуждения модулей намечается, вместо обсуждения constexpr контейнеров
^ Всё равно что вы пойдёте на концерт Металлики, а вам вместо этого покажут репетицию филармонии, где у половины оркестра увертюра Бетховена а у другой Рахманинов

Spoonson
07.06.2018
08:01:09
макросы то в итоге будут импортировать или нет?

Antony
07.06.2018
08:04:14
Spoonson
07.06.2018
08:04:50
какая интересная цифра вероятности

Alexander
07.06.2018
08:12:05
Spoonson
07.06.2018
08:13:49
да, из модулей - экспортировать

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