[cfe-dev] RFC: A mechanism for importing a declaration only when it exists

David Chisnall via cfe-dev cfe-dev at lists.llvm.org
Fri Jun 26 02:34:41 PDT 2020


On 26/06/2020 05:05, Louis Dionne via cfe-dev wrote:
> Now, I understand this raises several questions. Of course, this couldn't be
> done at the preprocessor level because I don't think we can know whether a
> declaration exists at that time. However, I was curious to ask on this list
> whether someone could think of a reasonable way to solve this problem.
> 
> Having some mechanism for doing this would be a huge life improvement for libc++.

I agree that something like this would be incredibly useful.  I wonder 
if it's sufficient to provide a built-in type trait and write something 
like:

using FILE = std::conditional<__type_exists_v<::FILE>, ::FILE, void>;

(With some built-in equivalent of std::conditional that does 
short-circuit evaluation)  You'd still have the std::FILE type, but it 
would be void on platforms where it didn't exist.  Would this be 
sufficient?

David



More information about the cfe-dev mailing list