On Tuesday, 12 July 2016 at 14:48:17 UTC, Ola Fosheim Grøstad
wrote:
«
template<typename... Ts> struct make_void { typedef void type;};
template<typename... Ts> using void_t = typename
make_void<Ts...>::type;
»
Variadic expansion works on my home code in VS2015. But we
shipped Quantum Break on VS2012. I can use variadic template
arguments for SFINAE purposes in VS2012, anything more involved
is virtually unsupported.
On Tuesday, 12 July 2016 at 15:14:39 UTC, Ola Fosheim Grøstad
wrote:
Anyway, if you are going to compare languages, use the latest
edition of both languages.
I know this makes sense. But by the same token, this is a
practical talk aimed at people using compilers and toolchains
that aren't necessarily up to date. What I'd rather do is have
further examples visible online for C++17 standards to compare
against. Either way, given Microsoft's rate, the industry will be
able to use C++17 some time in 2021.
Also of note is that with the binding system we're open sourcing,
it's meant to just slot in and start people using D alongside
their C++ codebases.
And further of note, this is to show things that are just plain
horrible to do in C++. SFINAE whackiness leads me in to talking
about the is operator in D, which leads in to talking about the
binding system... It's all about how it directly relates to
usage, not to what someone can do in six years time.