我发现gcc和clang允许在非类型模板参数类型子句中使用decltype(auto)
。例如: -C++ 17中的非类型模板参数可以是decltype(auto)吗?
template <decltype(auto)>
struct X {};
int foo ;
int main() {
X<(foo)> x;
static_cast<void>(x);
}
[live demo gcc][live demo clang]
是否符合标准的功能或者是一些GNU扩展?
这就是为什么我熬夜在SO。这样的问题是什么让我更多地了解自己的语言:) – StoryTeller
@StoryTeller我承认,至少对我来说,C++仍然充满惊喜:) –
非常好的问题。 +1,@StoryTeller:我同意你的定义。 – skypjack