根据[temp.deduct.guide/3]:
类似的语法但不涉及嵌套类,在gcc和clang中都可以编译通过:
但是下面的例子在[gcc]和[clang]中似乎都无法编译。(...) 在与对应的类模板相同的作用域内声明一个引导式推断,并且对于成员类模板,访问权限也相同。 (...)
#include <string>
template <class>
struct Foo {
template <class T>
struct Bar {
Bar(T) { }
};
Bar(char const*) -> Bar<std::string>;
};
int main() {
Foo<int>::Bar bar("abc");
static_cast<void>(bar);
}
什么是嵌套模板类的正确推导指南语法?或者这个语法是正确的,但编译器还没有支持它?
类似的语法但不涉及嵌套类,在gcc和clang中都可以编译通过:
#include <string>
template <class T>
struct Bar {
Bar(T) { }
};
Bar(char const*) -> Bar<std::string>;
int main() {
Bar bar("abc");
static_cast<void>(bar);
}