ForwardIterators是否必须是OutputIterators?我现在的STL的实现(VS2012)派生forward_iterator_tag从两个input_iterator_tag和output_iterator_tag,但我找不到标准[N3485]这个要求.
如何以规范的方式在C++ 11中定义forward-output-iterators?
根据标准,forward_iterator只是一个input_iterator.所以相应的forward_iterator_tag只是延伸input_iterator_tag.如果我们std::iterator用来定义迭代器,我们使用什么标签作为正向输出迭代器?
定义扩展两者的私有标记是否规范forward_iterator_tag,output_iterator_tag或者是否有更好的解决方案?
我想编写一个C++ - 可以在执行期间交互/调用Lua脚本的程序.该程序的一个关键概念是完全平台独立性,但我似乎无法找到实际提供某些东西的Lua-build.
到目前为止我发现的Lua-builds要么基于环境变量,要么基于特定的库.lib,.dll或者.so.来自lua.org的官方Lua-source 也不是我正在寻找的,因为它定义了一个主要功能......
是否有一个简单的 - 最好的情况是像sqlite-amalgamation - 用于C/C++的Lua-interpreter,它没有任何这些依赖项?
在我的一个程序中,我需要测试用户当前是否正在关注桌面/ shell窗口.目前我正在使用user32.dll中的GetShellWindow()并将结果与GetForegroundWindow()进行比较.
这种方法有效,直到有人更改桌面壁纸,但是一旦壁纸被更改,GetShellWindow()的句柄就不再与GetForegroundWindow()中的句柄相匹配,我不明白为什么会这样.(操作系统: Windows 7 32位)
有没有更好的方法来检查桌面是否专注?如果用户更换壁纸,最好不会破坏?
编辑:我设计了一个解决方法:我正在测试句柄以生成类"SHELLDLL_DefView"的子句.如果有,则桌面处于焦点状态.虽然它在我的电脑上工作并不意味着它会一直工作......
我最近在C++ 11上做了一个演讲,主要关注rvalues和移动语义.在演示期间,问题出现了为什么标准委员会决定重用"&&" - 令牌而不是引入像"§"这样的新标记.
有没有人遇到重用&&的理由?
我主要是一个C++人.由于C++缺少官方ABI,我总是使用类似COM的方法来支持多个编译器的组件设计.
最近我遇到的问题是Objective-C是否会取代类似COM的方法.显然,对于Objective-C来说,替换它需要一个稳定的ABI,因此我想知道Objective-C是否存在稳定的ABI(在所有主要操作系统[OSX,GNU/Linux,Windows]上)以及如何容易它将使用Objective-C(++)作为由不同编译器创建的组件之间的"粘合剂".
编辑: 正如Nikolai Ruhe所指出的,对COM的简短描述可能会有所帮助.COM本质上是一个"二进制标准",它允许混合不同编译器(以及各种语言)的二进制文件.COM的工具是接口,它定义了方法(映射到C++的虚函数).组件实现至少一个接口并作为DLL分发.它们可以位于系统的任何位置(位置在注册表中指定),并且可以由任何COM客户端通过它们实现的接口的ID加载.
是由标准定义的以下间接递归的结果还是未定义的行为?
auto abc() -> int ;
auto xyz() -> int {
static int instance = 3 + abc();
return instance;
}
auto abc() -> int {
static int instance = 2 + xyz();
return instance;
}
int main() {
int tmp = xyz();//or abc();
}
Run Code Online (Sandbox Code Playgroud)
在VS2012中,tmp是5,但我不确定这是否由标准保证.
我过去一直使用 COM 和 .NET 程序集来开发基于组件的系统。现在我要处理一个跨平台的 C++ 项目,并且想要在组件中构建代码......
显然 COM 和 .NET 不是一个选项,因为 COM 在任何地方都不可用,但 Windows 和程序集会向 .NET 框架添加依赖项,而这些依赖项可能在目标系统上不可用。
我知道由于 ABI 差异,我将无法在不重新编译的情况下在不同操作系统之间移动组件,但我想以某种方式编写代码,使其在源代码级别兼容。
是否有任何系统/框架可以在 C++ 中实现这样的架构?
如果应用程序在WinRT上运行,是否有新的宏来确定代码?正如我正在使用的那样LoadLibrary,如果有一个宏来替换所有来自LoadLibrary一个的调用,那就太棒了LoadPackagedLibrary......
我理解文档是正确的,因为我可以加载任何DLL(只要它在我的包中)LoadPackagedLibrary,对吧?!(只要该DLL不使用黑名单的API ......)
我目前正在为Visual Studio 2012测试11月份的CTP,并遇到了一个有趣的问题:标准强制要求强类型枚举enum和struct/ class关键字必须在同一行或者是实现中的错误应该报告给微软?
这编译:
enum struct name : type { ...
Run Code Online (Sandbox Code Playgroud)
这不(C2332)
enum
struct name : type { ...
Run Code Online (Sandbox Code Playgroud)
编辑:正如詹姆斯所说,这是一个实施中的错误,并向微软报告
我需要从我自己的应用程序中调用导出的符号 - 因此我需要知道调用dlopen/ LoadLibrary打开"自己" 是否安全.
一个例子是:
LoadLibrary("test.exe");
Run Code Online (Sandbox Code Playgroud)
在一个叫做的程序中test.exe.
我测试了它似乎工作,但我不太确定它是否真的支持行为.
在以下场景中是否可以为模板的某些特化定义专用构造函数:
template<typename T, size_t D>
class vector {
T values[D];
public:
vector();
};
Run Code Online (Sandbox Code Playgroud)
我想添加的构造函数依赖于D参数:
template<typename T>
vector<T, 2>::vector(T t1, T t2) { ... }
template<typename T>
vector<T, 3>::vector(T t1, T t2, T t3) { ... }
template<typename T>
vector<T, 4>::vector(T t1, T t2, T t3, T t4) { ... }
Run Code Online (Sandbox Code Playgroud) c++ ×11
c++11 ×4
.net ×1
c ×1
c# ×1
components ×1
ctp ×1
dlopen ×1
loadlibrary ×1
lua ×1
objective-c ×1
pinvoke ×1
recursion ×1
templates ×1
visual-c++ ×1
winapi ×1
windows ×1
windows-8 ×1