template
class variant {
struct moo {};
public:
variant(const variant& ) = default;
variant(std::conditional_t::value,
const variant&, moo>,
moo=moo());
variant() {};
};
This makes a non-eligible template instance have two copy constructors, which makes it not copy constructible.