小编Ref*_*ium的帖子

SFINAE与enable_if和重载

我已经环顾四周,但是无法找到解决我特定问题的方法。

我有代码:

template <typename T>
typename std::enable_if<std::is_arithmetic<T>::value || std::is_enum<T>::value, std::string>::type
    convertToString(const T argument) { return std::to_string(argument); }

std::string convertToString(std::string string);
Run Code Online (Sandbox Code Playgroud)

代码应该做什么:将模板版本用于任何数字类型(int,float,double和ENum),并将std :: string版本用于其他任何类型。

代码本身可以很好地编译,但是当我向函数传递一个具有operator const char *重载的类(这是可行的构造函数std::string)时,它会向我抛出以下大量消息:

no matching function for call to 'SQL_Connection::convertToString(ClassName &)’

candidate: template<class T> typename std::enable_if<(std::is_arithmetic<_Tp>::value || std::is_enum<_Tp>::value), std::__cxx11::basic_string<char> >::type convertToString(T)
 convertToString(const T argument) { return std::to_string(argument); }
 ^~~~~~~~~~~~~~~

template argument deduction/substitution failed:
In substitution of ‘template<class T> typename std::enable_if<(std::is_arithmetic<_Tp>::value || std::is_enum<_Tp>::value), std::__cxx11::basic_string<char> >::type convertToString(T) [with T = ClassName]’:
Run Code Online (Sandbox Code Playgroud)

我一直在努力寻找解决方案enable_if,但现在我发现自己很沮丧。 …

c++ templates sfinae enable-if c++11

9
推荐指数
1
解决办法
172
查看次数

如何检查TCP连接是否是本地的?

对于项目,我需要知道网络连接是来自本地计算机还是来自远程计算机.

怎么做到这一点?

c++ sockets tcp

5
推荐指数
1
解决办法
1154
查看次数

如何使用 REST API 访问 Android 上 Google Drive 上的应用程序数据

Google 正在停止使用其用于访问 Google 服务(即 Google Drive)的 Android API,并用 REST 取代它。

虽然有“迁移指南”,但由于“重复类定义”或其他原因,它无法构建可供安装的 APK 包。

由于某些原因,很难找到一些关于如何通过 Android 使用 REST 访问 Google 服务的全面信息(最好使用操作系统本机可用的方法)。

android kotlin google-drive-api

2
推荐指数
1
解决办法
1442
查看次数

标签 统计

c++ ×2

android ×1

c++11 ×1

enable-if ×1

google-drive-api ×1

kotlin ×1

sfinae ×1

sockets ×1

tcp ×1

templates ×1