如何在现代C++中实现没有宏的系统特定功能



JetBrains ReSharper for C++ 告诉我替换类似的东西

#ifdef _WIN32
#    define cls system("cls")
#else // Assuming Unix
#    define cls system("tput clear")
#endif // _WIN32

具有 constexpr 模板函数。

但是,我尝试通过std::enable_if_t<_WIN32>使用 SFINAE,但我收到错误说"无法重载仅通过返回类型区分的函数"(诚然,我没有使用模板函数,而是使用enable_if作为返回类型(。

除了使用enable_if作为返回类型之外,我不知道如何使用 constexpr 模板函数来实现预处理器将执行的操作。

在更一般的意义上,我希望能够基于不依赖于其他模板参数的编译时布尔值启用函数重载。

提前感谢!

你不需要enable_if,这适用于你可能需要在编译时根据类型参数等做出决策的情况。

预处理器在这里是合适的,尽管使用普通函数可能比宏更干净。

#ifdef _WIN32
void cls() { system("cls"); }
#else // Assuming Unix
void cls() { system("tput clear"); }
#endif // _WIN32

相关内容

  • 没有找到相关文章

最新更新