
Александр
06.05.2017
16:58:57
Было бы очень круто делать условную компиляцию на подобных ифах. Вместо возни с #ifdef

Surreal
06.05.2017
16:59:50
Кто-то из JetBrains хотел добавить аттрибуты. Это аналогичная идея, видимо.

Александр
06.05.2017
17:03:11

Google

Surreal
06.05.2017
17:06:43
Это понятно. Я про куски классов, как в примере выше.
Ага. Избавит от *_linux.hpp и *_win.hpp. Но это все мечты, т.к. это не просто фича языка, которые не особо просто в стандарт добавить, это еще поломает все компиляторы и код будет очень страшный и странный, когда уровень вложенности больше 1 будет.

Александр
06.05.2017
17:09:58

MrSmeet
06.05.2017
17:11:37

Grigor
06.05.2017
17:13:06
Нинраиццо посонам

Surreal
06.05.2017
17:13:57

MrSmeet
06.05.2017
17:15:08

Surreal
06.05.2017
17:15:32

MrSmeet
06.05.2017
17:15:42

Александр
06.05.2017
17:15:55
А чем ifdef то не угодил
1. Слабая читаемость
2. Сложные конструкции неудобно или невозможно реализовать
3. Препроцессор - зло
4. Не получится нормально оперировать типами

MrSmeet
06.05.2017
17:17:00

Surreal
06.05.2017
17:18:20
На вкус и цвет. Я был бы рад жить в пещере и охотиться на мамонтов, но человек решил эволюционировать. Вам нравится ifdef, другим людям он не нравится и они хотят его эволюционировать.

MrSmeet
06.05.2017
17:19:25

Surreal
06.05.2017
17:20:10
Ну, auto добавили, std::array добавили, хотя потребности в них не было.

Google

Surreal
06.05.2017
17:23:07
Добавили даже 1'000'000

MrSmeet
06.05.2017
17:23:07
auto очень полезен когда тип заведомо известен программисту и читающему код, и приходиться катать колбасы, тот же итератор, array тоже крайне полезен
Дык улучшает жи чтение кода и посути только человеко зависимая фитча, да к примеру такое есть даже в свитере. Проблемы почему внести всякие хотелки сразу в том, что коммитет думает и решает как не сломать уже сделанное и грамотно реализовать нужное, что бы в будующем не было проблем

Surreal
06.05.2017
17:26:39

Александр
06.05.2017
17:28:03

MrSmeet
06.05.2017
17:28:31

/dev
06.05.2017
17:28:34

Александр
06.05.2017
17:29:14
Я не против ifdef. Он хорош для своих целей. Но добавить условную компиляцию в meta-часть нужно.

MrSmeet
06.05.2017
17:30:13

Surreal
06.05.2017
17:30:18

Александр
06.05.2017
17:31:06

MrSmeet
06.05.2017
17:31:17

Александр
06.05.2017
17:31:33
Вот синтаксис и обратную совместимость надо обдумывать

MrSmeet
06.05.2017
17:33:18
Нате за вас загуглил https://stdcpp.ru/
Потом киньте линк я яростно плюсану

Surreal
06.05.2017
17:35:15

Alex Фэils?︙
06.05.2017
17:35:40

MrSmeet
06.05.2017
17:38:12
я тут эту сслку устал постить. и в канале @ProCxxNews )))))
Ну дак кого он ждет? Возникла знаковая идея пусть бежит постит. От того шо он в телеге поохает его хотелка в япе не появиться, а это рили вей. Если всем понравиться, они уж допрут до реализации не ломающей совместимость, ключевое слово в крайности добавят, не помрем

Alex Фэils?︙
06.05.2017
17:40:20
надо идею обсудить еще. а тут это бстрее делать. к тому же я с авторами договорился, что тут тож можно обсудить, чтоб на сайт улучшенные версии идей класть

/dev
06.05.2017
17:44:44
У меня есть глупый вопрос, который я в этом чате уже озвучивал, но раз снова речь про пропозалы зашла. Реален ли scoped enable_if? Т.е. есть n методов, у которых одинаковое условие в enable_if, можно ли добавить в язык scope для этих целей? В 17 стандарте constexpr if добавили, на базе которого можно было бы теоретически написать пропозал, но конструкция типа:
template <typename T>
class A {
if constexpr (std::is_integral_v(T)) {
void f1();
void f2();
}
};
ломает язык. Собственно, есть ли шанс, что подобное кого-то заинтересует, если найдется не ломающее язык решение, и адекватна ли вообще идея?
Вообще, если такая конструкция возникает, то можно в сторону шаблонных Mixin-ов посмотреть

Google

/dev
06.05.2017
17:50:38
Но выглядит неплохим сахаром

MrSmeet
06.05.2017
18:01:37
Скоро C++ будет знать -1 человек

Grigor
06.05.2017
18:03:33

MrSmeet
06.05.2017
18:04:36

Alexander
06.05.2017
18:05:30

MrSmeet
06.05.2017
18:07:14
Никто не знает C++, чего уж там
Я понять не могу только одного, почему все движеться в сторону усложнения а не упрощения и развития тулов. Сколько жду и все нет чертовых пакетов

Alexander
06.05.2017
18:07:29
в вижле уже можешь играться на очень удобном уровне

Grigor
06.05.2017
18:08:09
А В СТАНДАРТЕ НЕТ

MrSmeet
06.05.2017
18:08:10
Но разная реализация и комитет упоролся какие добавлять

Alexander
06.05.2017
18:08:24

MrSmeet
06.05.2017
18:08:25
Я на GCC

Alexander
06.05.2017
18:08:43
процесс стандартизации крайне медленный, и я думаю очевидно, почему

Grigor
06.05.2017
18:08:43
и я на gcc,причем на 4.6 :С

Alexander
06.05.2017
18:09:05

Grigor
06.05.2017
18:09:11
я не прошу

Admin
ERROR: S client not available

MrSmeet
06.05.2017
18:09:16
Вот тока не начинай а

Google

Grigor
06.05.2017
18:09:17
я и без них прекрасно себя чувствую)
если сильно повезет и мы взлетим на gcc по новее, то хотя бы 14е плюсы появятся

MrSmeet
06.05.2017
18:10:25
Да gcc топ компилятор. Ядро линя и почти весь открытый на нем вертят

Grigor
06.05.2017
18:10:43
топ, только при переезде он говорит что мы одно большое деприкейтед ;D

Alexander
06.05.2017
18:11:01

Grigor
06.05.2017
18:11:27
ну шлангом по-моему ядро все еще не соберешь

Alexander
06.05.2017
18:11:43

Alex Фэils?︙
06.05.2017
18:11:54
виндовса

Roman
06.05.2017
18:12:12

Alexander
06.05.2017
18:12:21
виндовса
ща git clone сделаю, и попробую сбилдить)

MrSmeet
06.05.2017
18:12:21

Alexander
06.05.2017
18:12:51

Roman
06.05.2017
18:13:34

MrSmeet
06.05.2017
18:14:09

Evgeniy
06.05.2017
18:14:14


Alexander
06.05.2017
18:14:18
Clang vs GCC (GNU Compiler Collection)
Pro's of GCC vs clang:
GCC supports languages that clang does not aim to, such as Java, Ada, FORTRAN, Go, etc.
GCC supports more targets than LLVM.
GCC supports many language extensions, some of which are not implemented by Clang. For instance, in C mode, GCC supports nested functions and has an extension allowing VLAs in structs.
Pro's of clang vs GCC:
The Clang ASTs and design are intended to be easily understandable by anyone who is familiar with the languages involved and who has a basic understanding of how a compiler works. GCC has a very old codebase which presents a steep learning curve to new developers.
Clang is designed as an API from its inception, allowing it to be reused by source analysis tools, refactoring, IDEs (etc) as well as for code generation. GCC is built as a monolithic static compiler, which makes it extremely difficult to use as an API and integrate into other tools. Further, its historic design and current policy makes it difficult to decouple the front-end from the rest of the compiler.
Various GCC design decisions make it very difficult to reuse: its build system is difficult to modify, you can't link multiple targets into one binary, you can't link multiple front-ends into one binary, it uses a custom garbage collector, uses global variables extensively, is not reentrant or multi-threadable, etc. Clang has none of these problems.
Clang does not implicitly simplify code as it parses it like GCC does. Doing so causes many problems for source analysis tools: as one simple example, if you write "x-x" in your source code, the GCC AST will contain "0", with no mention of 'x'. This is extremely bad for a refactoring tool that wants to rename 'x'.
Clang can serialize its AST out to disk and read it back into another program, which is useful for whole program analysis. GCC does not have this. GCC's PCH mechanism (which is just a dump of the compiler memory image) is related, but is architecturally only able to read the dump back into the exact same executable as the one that produced it (it is not a structured format).
Clang is much faster and uses far less memory than GCC.
Clang has been designed from the start to provide extremely clear and concise diagnostics (error and warning messages), and includes support for expressive diagnostics. Modern versions of GCC have made significant advances in this area, incorporating various Clang features such as preserving typedefs in diagnostics and showing macro expansions, but GCC is still catching up.
GCC is licensed under the GPL license. clang uses a BSD license, which allows it to be embedded in software that is not GPL-licensed.
Clang inherits a number of features from its use of LLVM as a backend, including support for a bytecode representation for intermediate code, pluggable optimizers, link-time optimization support, Just-In-Time compilation, ability to link in multiple code generators, etc.
Clang's support for C++ is more compliant than GCC's in many ways.
Clang supports many language extensions, some of which are not implemented by GCC. For instance, Clang provides attributes for checking thread safety and extended vector types.
https://clang.llvm.org/comparison.html#gcc
так проще


MrSmeet
06.05.2017
18:17:27
Это все слова, ты нечего не сможешь написать кроме них. Ну и Java не язык. А так, всегда защитники одной вещи могут найти 10 серьезных аргументов в пользу за или против, то же справедливо и наоборот.

Surreal
06.05.2017
18:19:32
GCC только Java 1.* полностью поддерживал. В 7.1 версии выпилили и эту поддержку.

Google

Grigor
06.05.2017
18:19:50
1.2 вроде, лол

MrSmeet
06.05.2017
18:20:36
И правильно, не нужна богомерзкая жаба

Alexander
06.05.2017
18:22:37

MrSmeet
06.05.2017
18:25:06

Alexander
06.05.2017
18:25:43