我有一个模板构造函数:
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
是否为位字段?