clang ++ 3.1 maar geen `cxx_lambdas` op Lion Xcode 4.3.3

Dit heeft te maken met Clang 3.1 en C ++ 11 ondersteuningsstatus , maar ik kon daar geen antwoord vinden en ik ben hier specifieker: cxx_lambdas ondersteuning op clang 3.1 op mijn exacte setup.

Ik heb Xcode 4.3.3 en het nieuwste pakket met opdrachtregelhulpprogramma's (11 juni 2012) geïnstalleerd op OSX Lion 10.7.4. Ik heb nu clang ++ versie 3.1 :

[email protected]:~/projects/tests/C++11$ clang++ -v
Apple clang version 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix

Gebaseerd op http://clang.llvm.org/cxx_status.html , verwachtte ik functies cxx_lambdas beschikbaar zijn, maar dit is niet wat ik krijg:

[email protected]:~/projects/tests/C++11$ make
clang++ -std=c++11 -stdlib=libc++ test_clang_features.cpp -o test_clang_features

[email protected]:~/projects/tests/C++11$ ./test_clang_features 
FAILED feature tests: 
__has_feature(cxx_constexpr) .................................. FAILED
__has_feature(cxx_generalized_initializers) ................... FAILED
__has_feature(cxx_inheriting_constructors) .................... FAILED
__has_feature(cxx_lambdas) .................................... FAILED
__has_feature(cxx_local_type_template_args) ................... FAILED
__has_feature(cxx_unrestricted_unions) ........................ FAILED
__has_feature(cxx_user_literals) .............................. FAILED

Hier is de code die ik heb uitgevoerd om dit rapport te krijgen:

#include 
using namespace std;
void main()
{
    cout << "FAILED feature tests: " << endl;

//  testing all features cxx_???? described in (only 3 shown here):
//      http://llvm.org/releases/3.1/tools/clang/docs/LanguageExtensions.html#cxx11

#if !__has_feature(cxx_generalized_initializers)
    cout << "__has_feature(cxx_generalized_initializers) ................... FAILED" << endl;
#endif
#if !__has_feature(cxx_implicit_moves)
    cout << "__has_feature(cxx_implicit_moves) ............................. FAILED" << endl;
#endif
//... analogous tests ...
#if !__has_feature(cxx_lambdas)
    cout << "__has_feature(cxx_lambdas) .................................... FAILED" << endl;
#endif
}

Merk op dat cxx_lambdas is mislukt. Hier is de complete lijst met geteste functies:

cxx_access_control_sfinae cxx_alias_templates cxx_alignas
cxx_attributes cxx_auto_type cxx_constexpr cxx_decltype
cxx_default_function_template_args cxx_defaulted_functions
cxx_delegating_constructors cxx_deleted_functions cxx_exceptions
cxx_explicit_conversions cxx_generalized_initializers
cxx_implicit_moves cxx_inheriting_constructors cxx_inline_namespaces
cxx_lambdas cxx_local_type_template_args cxx_noexcept
cxx_nonstatic_member_init cxx_nullptr cxx_override_control
cxx_range_for cxx_raw_string_literals
cxx_reference_qualified_functions cxx_rtti cxx_rvalue_references
cxx_static_assert cxx_strong_enums cxx_trailing_return
cxx_unicode_literals cxx_unrestricted_unions cxx_user_literals
cxx_variadic_templates

Waarom cxx_lambdas niet beschikbaar is in deze setup van clang ++ 3.1?

3
Apple clang-versie 3.1 is niet hetzelfde als Clang-versie 3.1 . Bedankt Apple voor het maken van zoiets eenvoudigs als moeilijk versiebeheer.
toegevoegd de auteur ildjarn, de bron

1 antwoord

Lambada support will be available with Xcode 4.4+
Apple's clang/llvm distribution is customized as ildjarn pointed out...

2
toegevoegd