繁体   English   中英

模板的非静态成员可以专注于数据或功能吗?

[英]Can a nonstatic member of a template specialize to data or function?

GCC,Clang,ICC和MSVC都拒绝此代码,但我没有在C ++标准的最新工作草案中找到任何违反规则。

规则是否已经在标准中,还是在缺陷报告中?

#include <type_traits>

template< typename t >
struct s {
    std::conditional_t< std::is_integral< t >::value, t, void() > mem;
};

s< int > a;
s< void * > b;

由于14.3.1 / 3,代码无效:

如果声明通过依赖于template-parameter的类型获取函数类型,并且这导致不使用函数声明符的语法形式的声明具有函数类型,则该程序是格式错误的。

此处声明的类型取决于模板参数t ,因此不能是函数类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM