Anatoly
Человек пришел из шарпа, спрашивает как дела обстоят в С++
Anatoly
Что не так?
Денис
🦥Alex Fails
#holywar
🐙 Antony
доня.
это общепринятые практики, если ты о них не в курсе - твои проблемы
и да, "сишники" - это ты про кого?
доня.
с чего такие выводы?
доня.
а, то есть ты ещё и C и C++ не различаешь
так и запишем
доня.
всё понятно с тобой, можешь прекратить позориться уже
🦥Alex Fails
Давайте вы свою бурную дискуссию в лс переместите.
Deleted Account
🦥Alex Fails
Ща дропнем в холивары😊
Deleted Account
множественое наследование класная штука, её нет тока в убогих языках
доня.
доня.
доня.
доня.
при чём тут язык вообще, лол
я о подходе
🦥Alex Fails
Тут знак не "равно", а "подразумевает"
доня.
в данном случае язык тут не при чём
в питоне тоже есть наследование (и даже множественное), и его там довольно активно используют
Constantine
Вот у меня есть класс фабрики MC объектов по прототипу и по-хорошему он не MC, поскольку создаваемый объект содержит ссылку на фабрику, но мне нужно, чтобы объект инициализировался через {} в структурах как обычно (по прототипу)
Constantine
Вопрос: есть ли смысл писать proposal, чтобы можно было объявить Move Constructor так, чтобы был разрешен Move Elision, но не был разрешен Move Constructor
Constantine
что-то вроде
classname(classname && other) = elisioned;
🐙 Antony
Constantine
хм... это категорически не очевидно
Berkus
Constantine
И случаи, когда происходит copy/move elision?
🐙 Antony
И случаи, когда происходит copy/move elision?
Мы про этот случай ?
classname(classname && other) = delete;
...
template <class... Args>
classname make_classname(Args... args) {
classname c (args...);
c.init();
return c; // copy elision, compiles in C++17
}
Constantine
class factory
{
public:
factory(){};
factory(factory const& other) = delete;
factory(factory && other) = delete;
};
void f()
{
factory f = factory(); //11 : <source>:11:25: error: use of deleted function 'factory::factory(factory&&)'
}
Constantine
хм... clang скомпилировал под -std=c++1z
🐙 Antony
gcc 7.1 тоже https://godbolt.org/g/X6gQRf
🐙 Antony
С С++17 это идёт из коробки.
Constantine
Угу. Спасибо, а какая точная формулировка теперь на Copy/Move elision?
Constantine
В смысле, как ее блокировать-то? :)
🐙 Antony
Вроде никак :) Это равносильно тому, что компилятор сразу создаст по мету нужный объект, без всяких копирований и перемещений
Constantine
class factory
{
public:
factory(){};
factory(factory const& other) = delete;
factory(factory && other) = delete;
};
factory g() {
return factory();
}
void f() {
factory f = g(); //немного взрывает мозг, но все ок
}
🐙 Antony
Constantine
Всегда приятно, когда комитет догадался о чем-то до меня :) Осталось подождать MS, хехехе
Anatoly
Или как, @antoshkka ?
Aleksei
а оператор = не надо?
Anatoly
в этом примере он не задействован
Anatoly
Хьюстон, есть кто на базе?
Anatoly
🐙 Antony
Или как, @antoshkka ?
Я попробовал - компилирует и с private :) Там до конструкторов вообще дело не доходит
Anatoly
да, получается, что это вообще не оптимизация, а полностью переработанная концепция:
In a function call, if the operand of a return statement is a prvalue and the return type of the function is the same as the type of that prvalue.
T f() { return T{}; }
T x = f(); // only one call to default constructor of T, to initialize x
T* p = new T(f()); // only one call to default constructor of T, to initialize *p
Note: the rule above does not specify an optimization: C++17 core language specification of prvalues and temporaries is fundamentally different from that of the earlier C++ revisions: there is no longer a temporary to copy/move from.
Vladislav
нормально там
objC и С++ нормальные по-отдельности, но их комбинация objC++ - адов франкенштейн. Там все фичи дублированны по 2 раза - две (несовместимых) системы классов, два (несовместимых) синтаксиса лямбд, две (несовместимых) системы эксепшнов, и т.д.
Nik
а зачем он тогда вообще?
Sergey
Sergey
в мобильной разработке под ios
Vladislav
в основном, чтобы писать обертки над плюсовым кодом для дерганья из objC
Nik
А как же модненький свифт?
Сергѣй
Только хотел это написать.
Sergey
переписывать работающие аппы никто не станет
Vladislav
fortran - тоже легаси, но даже на нем еще пишут
Сергѣй
Я несколько матерных писем в апл написал из-за этого языка, ад конечно, а они сейчас на нем весь метал написали , а шейдеры на С++
Сергѣй
Но мне было важно это сказать =))
HASTUR
Тут 1.5к программистов по сишарп?!
Ууу... Неплохо) Тоже решил научиться сишарпу
После теста в гикбрейнс 🌝
HASTUR
Что тут плохого?
Vladislav
Аххаха
🦥Alex Fails
Это чат по языкам C/C++. Про c# велком в другой чат: @pro_net
Крылатый
Крылатый
Бля
HASTUR
Балин
Точно
Крылатый
Вот.
Aleksei
1c-ник в чате!!!
HASTUR
Перепутал
Бывает
HASTUR
Parviz
хэлоу
Крылатый
Она на git переходить не собираются?
Danil
а что делать надо и какими объемами?
Крылатый
Видел.
Крылатый
Почему?
Sergey
в мейнтейнеры берут всех желающих или есть какой-то отбор?
Danil
полотенце в ноги бросают?
Ivan
Не каждый пройдёт прописку
Stanislav
https://blogs.msdn.microsoft.com/visualstudio/2017/08/14/visual-studio-2017-version-15-3-released/
Stanislav
whoohoo
Tom
А ты про какую либу вообще?