[英]Doesn't ADL considers namespaces associated with template argument?
考慮簡單的代碼:
template<int N> struct foo{};
namespace N
{
const int a=1;
void bar(foo<1>& x){}
}
int main()
{
bar(foo<N::a>());
return 0;
}
代碼不行嗎? 我為什么不知道為什么它不起作用。 謝謝
[basic.lookup.argdep] / 2:
[注意:非類型模板參數不會影響相關聯的名稱空間。
對於注釋中鏈接的代碼,命名空間中的typedef也不足夠,但由於其他原因。 查找基於解析的類型,而不是基於包含typedef
本身的名稱空間(或等效地using
)。
例如,如果您有如下代碼:
namespace A {
class T {};
}
namespace B {
typedef A::T TT;
}
使用B::TT
作為參數會將namespace A
添加到查找中,但不會將namespace B
添加到查找中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.