c++ - Name lookup issue in trailing return type -


the following example illustrates question:

#include <iostream> #include <string>  template <typename t> auto func(const t& x) -> decltype(to_string(x)) {   using std::to_string;   return to_string(x); }  int main() {   std::cout << func(1); } 

i don't want import std::to_string global namespace, not want use -> decltype(std::to_string(x)) doing disables adl. obviously, can't put using std::to_string within decltype. so, how should it?

defer namespace;

namespace activate_adl {   using std::to_string;   template <typename t>   auto func(const t& x) -> decltype(to_string(x)) {     return to_string(x);   } }  template <typename t> auto func(const t& x) -> decltype(activate_adl::func(x)) {   return activate_dl:: func(x); } 

this allows adl still done, doesn't pollute global namespace.

having hit issue few times std related functions , adl, i've found deferred namespace (well named) suitable alternatives.


Comments

Popular posts from this blog

php - Wordpress website dashboard page or post editor content is not showing but front end data is showing properly -

javascript - Get parameter of GET request -

javascript - Twitter Bootstrap - how to add some more margin between tooltip popup and element -