我刚刚阅读了一些与TypeScript相关的广告信息,此外我还没有使用过这个JavaScript超集的经验.所以我有一些基本问题:
随意回答所有问题或问题的子集.谢谢.
我有两个类似的程序,一个用C++编写,另一个用D编写.
编译在Windows7 64位,64位二进制文件上.
C++版本,VS 2013:
#include <iostream>
#include <string>
int main(int argc, char* argv[])
{
float eps = 1.0f;
float f = 0.0f;
while (f + eps != f)
f += 1.0f;
std::cout << "eps = " + std::to_string(eps) + ", max_f = " + std::to_string(f) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
D版,DMD v2.066.1:
import std.stdio;
import std.conv;
int main(string[] argv)
{
float eps = 1.0f;
float f = 0.0f;
while (f + eps != f)
f += 1.0f;
writeln("eps = …Run Code Online (Sandbox Code Playgroud) 此C++代码与VS 2012成功编译,但在运行时崩溃:
#include <iostream>
#include <functional>
void f()
{
std::cout << "f called" << std::endl;
}
int main()
{
auto get_f= []()
{
bool b = true;
return b ? f : f;
};
std::function<void()> filter(get_f()); // crash here!!!
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我们将get_f更改为:
auto get_f= []()
{
return f;
};
Run Code Online (Sandbox Code Playgroud)
然后程序运行没有崩溃.
这个代码或编译器/标准库错误是一个问题吗?
我没有使用较新版本的Visual Studio进行测试.