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

 
Движок такой же, что ищет по своим данным
 
гоню
 

Не получается указать значение параметра по умолчанию в шаблоне функции:

template<typename T>
void Func1(T t1, T t2 = 0)     // error: '0' - illegal operation use
{
}

template<typename T>
void Func2(T t1, T t2 = T())   // error: 'T' - function not defined
{
}

 

Не получается указать тип параметра по умолчанию:

template<typename T = int>   // '=' - syntax error
void Func3(T t)
{
}
 
Sergei Vladimirov:

Не получается указать значение параметра по умолчанию в шаблоне функции:

A какой результат вы ожидаете?
template<typename T>
string Func1(T t = NULL) { return typename( T ); }
void OnStart()
{
        Print(Func1(   )); //какой ожидается результат?
        Print(Func1( 1 )); //нормально
}
 
Приветствую. Ндюк на андроид 
Версия андроид ласт 6.ххх 
При отправке сообщений в лс выскакивает такая ошибка 

Файлы:
 
A100:
A какой результат вы ожидаете?

Как в сях - инициализацию конструктором типа по умолчанию:

#include <iostream>
using namespace std;

template<typename T>
void Func(T t1, T t2 = T())
{
        cout << "t1 value: " << t1 << endl;
        cout << "t2 value: " << t2 << endl;
}

int main()
{
        Func(1);      // t1 value: 1    t2 value: 0
}


А в МКЛ это не компилируется:

template<typename T>
void Func(T t1, T t2 = T())    // 'T' - function not defined
{
        Print("t1 value: ", t1);
        Print("t2 value: ", t2);
}

void OnStart()
{
        Func(1);

}

 

PS. В предыдущем примере я слишком многое выбросил из кода и оставил только один параметр в функциях, это действительно было неправильно. Исправил.

 
Vladislav Andruschenko:
Приветствую. Ндюк на андроид 
Версия андроид ласт 6.ххх 
При отправке сообщений в лс выскакивает такая ошибка 

Спасибо, исправим.
 
Vladislav Andruschenko:
Приветствую. Ндюк на андроид 
Версия андроид ласт 6.ххх 
При отправке сообщений в лс выскакивает такая ошибка 

Здравствуйте!

Ошибка будет исправлена в ближайшее время. Спасибо за обращение.

 
Sergei Vladimirov:

А в МКЛ это не компилируется:

С учетом особенностей MQL (objects are passed by reference only; typename - возвращает строку)
template<typename T>
void Func(T t1, T t2 = NULL)  
покрывает все возможные случаи (кроме: Не получается указать тип параметра по умолчанию). Если нет - приведите пример
 

A100:
С учетом особенностей MQL (objects are passed by reference only; typename - возвращает строку)

 

покрывает все возможные случаи (кроме: Не получается указать тип параметра по умолчанию). Если нет - приведите пример

template<typename T>
void Func(T t1, T t2 = NULL)
{
        Print("t1: ", t1, " t2: ", t2);
}

void OnStart()
{
        Func(1);   // 'Func' - cannot to apply function template
}

А вот то, что объекты передаются в функцию только по ссылке, я не учёл.