Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用c++;11个功能,不影响可移植性_C++_C++11 - Fatal编程技术网

C++ 使用c++;11个功能,不影响可移植性

C++ 使用c++;11个功能,不影响可移植性,c++,c++11,C++,C++11,在使用c++11启动基于clang的新项目时,您将如何使用可变模板、初始值设定项列表、默认函数和删除函数等新功能(这些功能目前未在VC11中实现),使项目有一天可以移植到windows?Microsoft将是其中一个更快的实现者。我真的相信。在听了(“STL?有关系吗?”)之后,你也可能会这样做。所以,就用它吧 或 使用boost作为抽象层(目前通过宏实现一些可变模板ish功能),并依赖于boost实现者为您的平台选择一个好的实现 更新,在@NicosC comment之后:如果您是从Clang

在使用c++11启动基于clang的新项目时,您将如何使用可变模板、初始值设定项列表、默认函数和删除函数等新功能(这些功能目前未在VC11中实现),使项目有一天可以移植到windows?

Microsoft将是其中一个更快的实现者。我真的相信。在听了(“STL?有关系吗?”)之后,你也可能会这样做。所以,就用它吧

使用
boost
作为抽象层(目前通过宏实现一些可变模板ish功能),并依赖于boost实现者为您的平台选择一个好的实现


更新,在@NicosC comment之后:如果您是从Clang或GCC开始,只要MS不支持您正在使用的C++11功能,您就可以在Windows上使用它们。我认为这是“激励MS改进C++11支持”(甚至更多)。因此,如果您有选择,请使用C++11功能来改进您的代码——更易于编写、维护和理解。

据我所知,在上一个CTP(2012年11月)中支持可变模板和初始值设定项列表,因此我不会担心它们。不确定默认和删除的函数,但我相信它们很快就会得到支持(不过这只是我个人的观点)。有关官方信息,请参见此处和此处。您可以使用
#ifdef
s,但我认为这不会给您带来太多好处。您可能只想等待,直到您确信您希望支持的每个平台都有您正在使用的功能,并一如既往地尝试抽象细节,这样就不重要了。例如,我们认为使用可变模板将不可能抽象出细节,但它们似乎至少支持MVC。有时,你可以通过制作一个带有1个参数的版本、另一个带有2个参数的版本、另一个带有3个参数的版本等来“伪造”变量模板。你将有一些固定的最大值,但通常一个给定的项目不会达到任意的高度。这取决于你是否想在微软实施整个标准之前在VS中构建这个项目。无论如何,windows有clang和g++版本,所以完全可以使用整个c++11。最快的实现者?我很高兴他们添加C++11的速度有多快,但是gcc和clang是@slavik262:当然!这是很自然的,因为它是操场。不,也不是最快的,但在他们当中。实际上他们是最慢的,不是最快的。这就是为什么OP首先受到关注的原因。如果你必须要处理Clang和GCC,你知道你很好。有了VS,就没那么多了。@NikosC:你也是对的。我不该说这样肤浅的话。这里有很多编译器,但是只有少数人会认真对待最近的C++。有一些(主要是在其他OSES),我会说他们只是在中间,也许有点快,然后中间。