gpt4 book ai didi

c++ - 为什么模板别名特化取决于引用它的上下文?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:39 27 4
gpt4 key购买 nike

考虑这个示例代码:

template <class T>
using pt_type = typename T::type;

template <class T>
class V {
using type = int;
public:
using pt = pt_type<V>;
};

void g() {
V<int>::pt a; // Does compile
pt_type<V<int>> b; // Does not compile
}

V<int>::ptpt_type<V<int>> 的别名.然而,它被定义的事实取决于它被引用的上下文。

C++ 标准 中哪里解释了模板实参替换模板实参是在引用别名特化的上下文中执行的?

最佳答案

无处可去。这是 core issue 1554 .

The interaction of alias templates and access control is not clear from the current wording of 14.5.7 [temp.alias]. For example:

template <class T> using foo = typename T::foo;

class B {
typedef int foo;
friend struct C;
};

struct C {
foo<B> f; // Well-formed?
};

关于c++ - 为什么模板别名特化取决于引用它的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com