Информация об изменениях

Сообщение Re[3]: Поиск имени в NS параметра шаблона - можно что-то под от 09.01.2020 11:49

Изменено 09.01.2020 11:50 rg45

Re[3]: Поиск имени в NS параметра шаблона - можно что-то подобное придумать?
Здравствуйте, удусекшл, Вы писали:

S>>Может я немного недопонял, но если сделать внутри функции printSomething() using namespace std::iomanip и using namespace myNS::iomanip, это будет не cool?


У>В этом случае нужно подключать всё хидеры. А смысл шаблона в том, чтобы уйти от конкретных типов, и, в тч, ничего лишнего заранее не инклудить


Ну так эта проблема существут в любом из предложенных решений. Вот
Автор: B0FEE664
Дата: 12.12.19
, например:

template<class T> auto S_HEX = std::hex;


Здесь std::hex не является зависимым именем и его объявление должно быть видимо в этой точке.

В то же время, я думаю, не будет большим преступлением сделать в собственном коде предварительные объявления некоторых сущностей, которые жестко зафиксированы в стандарте языка:

namespace std
{

class ios_base;

ios_base& dec( ios_base& str );
ios_base& hex( ios_base& str );
ios_base& oct( ios_base& str );

} // namespace std
Re[3]: Поиск имени в NS параметра шаблона - можно что-то под
Здравствуйте, удусекшл, Вы писали:

S>>Может я немного недопонял, но если сделать внутри функции printSomething() using namespace std::iomanip и using namespace myNS::iomanip, это будет не cool?


У>В этом случае нужно подключать всё хидеры. А смысл шаблона в том, чтобы уйти от конкретных типов, и, в тч, ничего лишнего заранее не инклудить


Ну так эта проблема существут в любом из предложенных решений. Вот
Автор: B0FEE664
Дата: 12.12.19
, например:

template<class T> auto S_HEX = std::hex;


Здесь std::hex не является зависимым именем и его объявление должно быть видимо в этой точке.

В то же время, я думаю, не будет большим преступлением сделать в собственном коде предварительные объявления некоторых сущностей, которые жестко зафиксированы в стандарте языка:

namespace std
{

class ios_base;

ios_base& dec(ios_base&);
ios_base& hex(ios_base&);
ios_base& oct(ios_base&);

} // namespace std