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

 

Пробовал Atom, Google Chrome, Firefox на Windows 7.

Пробовал Atom, Microsoft Edge на Windows 10.

Нигде карту не показало.

PS Вообщем-то, карта мне особенно и не требуется... :))))  Расположение и так знаю.

 
A100 #:

И как оно Вам помогло в данном примере?

Как минимум - заставило поправить код.

template<typename T>

int f( T t )

{   

    if (typename(T) == "string")

        return  -1;

    return (t==(T)-1); //Warning: implicit conversion from 'number' to 'string'

}

void OnStart()

{

  Print(  "string '' returned ",  f( "" ));

  Print(  "f( -1 )  returned ",f( -1 ));

  Print(  "f(  1 )  returned ",f(  1 ));

}


 
Какой синтаксис у шаблонных указателей на функцию?
template <typename T>
typedef T (*TNew)();

int f() { return(0); }

TNew<int> a = f; // Ошибка.
 
Putnik #:

Версия последняя, Atom.

Пробовал Google Chrome, Firefox. Ативирус отключен, AdGuard отключен.

Карты нет.

Вам же четко написали обновить IE    Internet Explorer Другие браузеры не трогайте

 
A100 #:

Другими словами

#undef MACRO - безусловно!

 
Mikhail Dovbakh #:

Как минимум - заставило поправить код.

А почему Вы решили, что в шаблоне только простые типы могут быть?

template<typename T>
int f( const T& t )
{
    if (typename(T) == "string")
        return -1;
    else
        return t == (T)(-1);
}
class A {
public:
        int operator==( int i ) const { return 3; }
};
void OnStart()
{
    f(""); //нормально
    A a;
    f( a ); //Error: !!!
}

Т.е. после Вашей правки код вообще не работает, а до этого Warning только был

 
Slava #:

#undef MACRO - безусловно!

Давайте уберем #undef вообще:

//build 4076
#define MACRO   1
#ifndef MACRO
/*#else//это комментарий*/
#define MACRO   3
#endif
void OnStart()
{
    Print( MACRO );
}

Результат:   3

Ожидалось: 1

 
A100 #:

Давайте уберем #undef вообще:

Результат:   3

Ожидалось: 1

Проблема сводится к тому, можно ли закомментить директиву препроцессора.

 
JRandomTrader #:

Проблема сводится к тому, можно ли закомментить директиву препроцессора.

Это только разработчики могут сказать:

#ifndef MACRO
#define MACRO   1
/*#else//это комментарий*/
#define MACRO   2 //Warning: macro 'MACRO' redefinition
#endif

В данном случае есть Warning, а значит аналогичный комментарий на логику никак не повлиял

 
JRandomTrader #:

Проблема сводится к тому, можно ли закомментить директиву препроцессора.

Проблема сводится к тому, что препроцессор непредсказуем.