Отключить функцию шаблона, если аргумент является битовым полем - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть конструктор шаблона:

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 битовым полем?

...