[PATCH] D26903: [libcxx] Add <variant> tests (but not implementation)

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 22 10:48:36 PST 2016


EricWF added inline comments.


================
Comment at: test/std/utilities/variant/variant.helpers/variant_size.pass.cpp:41
+{
+    test<std::variant<>, 0>();
+    test<std::variant<void*>, 1>();
----------------
CaseyCarter wrote:
> STL_MSFT wrote:
> > Hmm, is this cromulent now that empty variants are forbidden?
> It's not forbidden to *name* `variant<>`; it is forbidden to *instantiate* it. The pertinent specialization of `variant_size`:
> ```
> template <class... Types>
> struct variant_size<variant<Types...>>
>   : integral_constant<size_t, sizeof...(Types)> { };
> ```
> is implicitly specified to not instantiate `variant<Types...>`.
Note that there is no similar requirement that `variant<void>` or `variant<T&>` can even be named.


https://reviews.llvm.org/D26903





More information about the cfe-commits mailing list