I have done the test and can confirm that my code compile fine with:
g++-7 -std=c++14 -O0 -g code_generated.cc -o a.gcc
But gives error with:
g++-7 -std=gnu++14 -O0 -g code_generated.cc -o a.gcc
and produces the following error (so my initial post):
array.hh:12:59: error: reference to ‘voidt’ is ambiguous
template <typename, template class, typename = voidt<>>
Digging further I found that the error is misleading (there is a lot of stackoverlflow issue on this one), but I do not yet understand the core issue.
This kind of code is used in conjunction with SFINAE to do template meta programming. It's quite painfull to analyse these errors when the compiler doesn't behave as expected.
As I mentioned earlier, compiling the same code with clang (an alternative c++ compiler) works fine.
I feel sorry to ask that, but it seems that -std=c++14 is more close to the C++14 standard than the -std=gnu++14 options (for whatever it means). Wouldn't it be more sensible to use the former rather than the latter ? (And putting aside it would solve my issue )