如果参数是位字段,则禁用模板功能

时间:2018-12-17 18:20:14

标签: c++ templates enable-if

我有一个模板构造函数:

template <typename T, std::enable_if</*blah blah*/>>
Foo(T&& t);

和现有的构造函数:

Foo(bool b);

现在,如果您致电:

struct S { int x : 3; };
S s;
Foo(s.x);

您得到non-const reference cannot bind to bit-field t。有关原因,请参见:bit-field in overload resolution for template,但为何超出此问题范围。

我只对位域禁用了完美转发构造函数就可以了。是否有任何编译时方法来检查T是否为位字段?

0 个答案:

没有答案