Size: a a a

2021 February 06

TM

Tolik Malibroda in pro.cxx
мыши
почему должна ?
Почему нет?) Я же ее определил, то есть компилятор должен перебрать возможные перегрузки и остановиться на std::string
источник

м

мыши in pro.cxx
<<(string) это функция в стрингах, а не метод ostream
источник

TM

Tolik Malibroda in pro.cxx
мыши
<<(string) это функция в стрингах, а не метод ostream
Но если я напишу вместо string свой тип, для которого я же написал оператор <<, то все работает
источник

м

мыши in pro.cxx
Tolik Malibroda
Но если я напишу вместо string свой тип, для которого я же написал оператор <<, то все работает
ну так если ты напишешь << для test то тоже все будет работать
источник

LA

Liber Azerate in pro.cxx
мыши
ну так если ты напишешь << для test то тоже все будет работать
Если передать как шаблонный аргумент свой тип с определённым оператором вывода, но не определять для test, то всё работает
источник

м

мыши in pro.cxx
источник

AF

Aidar Fattakhov in pro.cxx
Tolik Malibroda
Переслано от Tolik Malibroda
Почему компилятор не может преобразовать такое?
#include <iostream>
#include <string>

template<typename T>
struct test {
 operator T() { return T(); }
};

int main() {
 std::cout << test<std::string>();
 return 0;
}
там шаблон для operator«(ostream, basic_string<T>)
источник

AF

Aidar Fattakhov in pro.cxx
он не участвует в adl
источник

AF

Aidar Fattakhov in pro.cxx
Aidar Fattakhov
там шаблон для operator«(ostream, basic_string<T>)
источник

TM

Tolik Malibroda in pro.cxx
Понял, спасибо
источник

DS

Dmitry Sokolov in pro.cxx
Только лучше это делать в виде hidden friend.
https://www.justsoftwaresolutions.co.uk/cplusplus/hidden-friends.html
источник

OD

Oleksandr Dovbnia in pro.cxx
Почему некоторые не используют using namespace std; или using namespace *функции* ?
источник

F

Fructosex in pro.cxx
Чтобы избежать конфликта пространств имен
источник

OD

Oleksandr Dovbnia in pro.cxx
А подробней можно ?)
источник

S

Stas in pro.cxx
Oleksandr Dovbnia
А подробней можно ?)
При разрастрании проекта может стать очень много функций с одинаковых названием. И пространство имён помогает разграничить как-то. Если ты подключишь 2 пространства через using, которые содержат одинаковые имена и параметры, то что тогда надо вызвать? Из какого пространства имён?
UPD : к тому же IDE будет выдавать тогда абсолютно все функции при попытке написать.
источник

m

magras in pro.cxx
Aidar Fattakhov
там шаблон для operator«(ostream, basic_string<T>)
Да, я бы дополнил замечанием, что шаблонная функция
template <class T>
void foo(T);

примет любой тип и именно поэтому не будет применяться конверсия. У оператора вывода сигнатура чуть сложнее, но суть та же.
источник

OD

Oleksandr Dovbnia in pro.cxx
Stas
При разрастрании проекта может стать очень много функций с одинаковых названием. И пространство имён помогает разграничить как-то. Если ты подключишь 2 пространства через using, которые содержат одинаковые имена и параметры, то что тогда надо вызвать? Из какого пространства имён?
UPD : к тому же IDE будет выдавать тогда абсолютно все функции при попытке написать.
Понял, спасибо за информацию.
источник

F

Fructosex in pro.cxx
На примере. Ты реализовал свой строковой класс и назвал его string, но в пространстве имен std:: уже есть такой класс, и если в коде будет using namespace std;, то будет переопределение.
источник

ДА

Дмитрий Ашневиц... in pro.cxx
Stas
При разрастрании проекта может стать очень много функций с одинаковых названием. И пространство имён помогает разграничить как-то. Если ты подключишь 2 пространства через using, которые содержат одинаковые имена и параметры, то что тогда надо вызвать? Из какого пространства имён?
UPD : к тому же IDE будет выдавать тогда абсолютно все функции при попытке написать.
Да и читать с неймспейсами удобнее. Using лучше пореже использовать или в пределах какой нибудь ограниченной области видимости, когда много прям использований повторяющихся.
источник

m

magras in pro.cxx
Aidar Fattakhov
он не участвует в adl
Ну и кажется, adl здесь как раз используется. Оператор же находится в пространсте std.
источник