Ошибки, баги, вопросы - страница 3480

 
fxsaber #:

Просьба привести цитату.

Какую цитату? Различие сохранено только для ленивости - все остальное по общим правилам. Правила меняются не только путем добавления, но и путем исключения старого

 
fxsaber # :

Просьба привести цитату.

Я уже предоставил один.

Вот еще один :


И вы также можете прочитать текущий проект .

Извините, но я не могу предоставить источники на русском языке.

Do overloaded logical operators && and || short-circuit since C++17?
Do overloaded logical operators && and || short-circuit since C++17?
  • 2016.12.19
  • Amir Kirsh Amir Kirsh 13k 43 43 silver badges 79 79 bronze badges
  • stackoverflow.com
Unlike the built-in versions, the overloads do not sequence their left operand before the right one, and (until C++17) cannot implement short-circuit evaluation. Couldn't find any resource or code example for C++17 supporting short-circuit for operator&& and operator||. Is it related to C++17 parameter...
 
A100 #:
Error when running:

What is the fundamental difference between (1) and (2)?


"const" !!!
void  f2(        string  )  export  {} 
//Test.mq5 
#import  "Test2.ex5" 
    void  f2(  const  string  =  "2"  );
 #import
 
Dominik Egert #:

"const" !!!
    void f1(       string )        {}
    void f1( const string = "1" );

В f1 - тоже const нет (а все работает) - пример построен на противоречии: в одном случае все работает, а в другом подобном - нет

 
A100 #:

В f1 - тоже const нет (а все работает) - пример построен на противоречии

нет. импорт не работает. не соответствие сигнатуры функции.
 
Dominik Egert #:
нет. импорт не работает. не соответствие сигнатуры функции.

Сам по себе #import не является препятствием для вызова функции, иначе .dll без const тоже не работали бы - а они работают:

//Test2.cpp
    void f2(       string ) {}
//Test.mq5
#import "Test2.dll"
    void f2( const string = "2" );
#import
    void f1(       string ) {}
    void f1( const string = "1" );
void OnStart()
{
    f1(); //(1)//нормально
    f2(); //(2)//нормально
}

но речь о другом:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2024.02.01 10:29

В f1 - тоже const нет (а все работает) - пример построен на противоречии: в одном случае все работает, а в другом подобном - нет

 
Alain Verleyen #:

И вы также можете прочитать текущий проект .

Разное поведение этих двух операторов сделано специально разработчиками C++?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2024.01.31 17:20

Т.е. в Microsoft дураки сидят ?!

#ifdef __cplusplus
class A {
public:
    A() {}
    A(const A&) {}
    void operator&&(const A&) { Print(3); }
    void operator&=(const A&) { Print(3); }
};
A f( int i ) { printf( "%d", i ); return A(); }
int main()
{                 //Результат:
    f(1) && f(2); //1-2-3
    f(1) &= f(2); //2-1-3
    return 0;
}
#endif

В одном случае 1-2-3, а в другом 2-1-3 сделали ?

Если да, то где можно почитать о причинах такого изменения языка в C++17?

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2024.02.01 07:26

Ошибка при выполнении:
//Test2.mq5
#property library
    void f2(       string ) export {}
//Test.mq5
#import "Test2.ex5"
    void f2( const string = "2" );
#import
    void f1(       string )        {}
    void f1( const string = "1" );
void OnStart()
{
    f1(); //(1)//нормально
    f2(); //(2)//Error: cannot find 'f2' in 'Test2.ex5'
}

А какая принципиальная разница между (1) и (2) ?

Ошибка при компиляции.
 
fxsaber #:
Разное поведение этих двух операторов сделано специально разработчиками C++?

Если да, то где можно почитать о причинах такого изменения языка в C++17?

Там есть неточность - результат получен в C++20 Shell (в Online GDB аналогично)

и вначале добавить еще нужно:

#include <stdio.h>
#define Print(X)    printf("%d",X)

А причина простая - чтобы все компиляторы в будущем работали одинаково (убрали неоднозначность), а не кто как захочет

 
fxsaber #:
Ошибка при компиляции.

А где доказательство (скрин) ? Компилятор build 4158 - никакой ошибки при компиляции - нет - только при выполнении - в указанном месте