boost.config检查东西存在在编译时 - 如果ULLONG_MAX
或ULONG_LONG_MAX
或ULONGLONG_MAX
被定义(它也确实每编译器检查一样,如果_MSC_VER >= 1400
)。检测是否长长包括<code><limits.h></code>
但是,如果我通过-std=c++98 -pedantic-errors
gcc我不能真正使用long long
即使这些东西被定义。我可以检查__cplusplus
是否等于或大于201103
,但这与编译器标记无关 - 我可以使其等于1997年,仍然可以使用long long
- 这取决于我给出的标记。
那么有没有一种方法可以真正检测我是否可以使用long long
?
这闻起来像一个XY问题。什么是你想解决的真正问题。不,不是你问的;您认为其解决方案的问题是“检测我是否可以使用很长时间”。 –
@SamVarshavchik我正在写一个库,并且如果可能的话,想为''long long''提供一个函数的重载。这个想法是尽可能多地处理基本类型。 – onqtam
我想象一个函数模板,可以采用任何整数类型,也许有一些SFINAE技巧。 –