小编23W*_*23W的帖子

如何在编译时进行条件变量初始化?

C++ 11标准具有std::conditional<>用于在编译器时通过某种布尔条件选择类型的模板.如何进行相同的操作但是为变量初始化选择init值?类似于type a = (exp) ? first_value : second_value;.

我用我的模板:

template<bool B, typename T>
inline constexpr T&& conditional_initialize(T&& i1, T&& i2) {
    return B ? std::move(i1) : std::move(i2);
}
Run Code Online (Sandbox Code Playgroud)

但它只能用于POD类型:int a = conditional_initialize<true>(1, 2);.对于数组初始化,此模板编译时出错.错误的编译示例:int a[] = conditional_initialize<true>({1, 2}, {3,4,5});

错误消息:没有匹配函数用于调用'conditional_initialize(<brace-enclosed initializer list>,<brace-enclosed initializer list>)';

谁可以帮我模板?

c++ c++11

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

如何处理 Dropbox C# SDK 中的错误?

属性如何处理 Dropbox C# SDK 中的错误?

我想使用通用方法来处理来自不同 API 调用的错误。此方法应该在顶级应用程序级别和多个 API 调用中使用。对于大多数云 API(例如 Microsoft OneDrive 和 Google Drive API),我可以做到这一点,因为有严格定义的列表(枚举将包含所有错误代码)并且只有一个用于错误处理的异常类。但在 Dropbox C# SDK 中,一切都相反!没有任何错误代码列表,但有十几个异常类(一个异常模板Dropbox.Api.ApiException<T>和模板参数的大量错误对象T)。查找文件操作的错误类计数示例 - http://dropbox.github.io/dropbox-sdk-dotnet/html/N_Dropbox_Api_Files.htm

我勒个去!如何处理所有这些?写巨catch()块?

更糟糕的是,它们中的大多数都使用相同的错误类型!
例如,Dropbox.Api.Files.LookupError描述“未找到”、“格式错误的路径”等错误的类是21的一部分!其他错误类别。为了处理简单的“未找到”错误,我必须能够捕获两打异常!正常吗?

那么,属性如何处理 Dropbox C# SDK 中的错误呢?

c# dropbox dropbox-api

3
推荐指数
1
解决办法
1828
查看次数

VC2010执行std :: is_base_of包含bug?

std::is_base_of<B, D>如果D是从B派生的,或者两者都是相同的非联合类,则C++ 11标准必须返回true.但是在VC++ 2010中,如果类型B是D类型的唯一基类,则stl实现模板返回true!这是一个错误吗?

http://msdn.microsoft.com/en-us/library/bb982243(v=vs.100).aspx页面的示例部分

std::is_base_of<base, base> == true
Run Code Online (Sandbox Code Playgroud)

但这与VC++ 2010 STL实现不符.虽然它符合C++ 11标准的要求.哪个错误?

c++ std visual-studio-2010 visual-c++ c++11

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

标签 统计

c++ ×2

c++11 ×2

c# ×1

dropbox ×1

dropbox-api ×1

std ×1

visual-c++ ×1

visual-studio-2010 ×1