У меня есть конструктор шаблона:
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
.См .: битовое поле в разрешении перегрузки для шаблона относительно того, почему, но почему это выходит за рамки этого вопроса.
У меня все в порядке, просто отключив конструктор совершенной пересылки для битовых полей,Есть ли способ во время компиляции проверить, является ли T
битовым полем?