Skip to content

compile errors on mac #294

@kennyfrc

Description

@kennyfrc

Previous versions (07-19) and (08-30) work.

Files that cause these errors:

  • all_factorizers.h
  • trainer_feature_transformer.h
  • factorizer_half_kp.h
  • evaluate_nnue_learner.cpp

See below:

In file included from nnue/trainer/features/all_factorizers.h:4:
nnue/trainer/features/factorizer.h:16:38: error: constexpr function's return type 'std::string' (aka 'basic_string<char,
      char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_name() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:4:
nnue/trainer/features/factorizer.h:20:38: error: constexpr function's return type 'std::string' (aka 'basic_string<char,
      char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_factorizers_string() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:5:
nnue/trainer/features/factorizer_feature_set.h:24:38: error: constexpr function's return type 'std::string' (aka
      'basic_string<char, char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_factorizers_string() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:5:
nnue/trainer/features/factorizer_feature_set.h:84:38: error: constexpr function's return type 'std::string' (aka
      'basic_string<char, char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_name() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:5:
nnue/trainer/features/factorizer_feature_set.h:88:38: error: constexpr function's return type 'std::string' (aka
      'basic_string<char, char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_factorizers_string() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:7:
nnue/trainer/features/factorizer_half_kp.h:48:38: error: constexpr function's return type 'std::string' (aka 'basic_string<char,
      char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_name() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:7:
nnue/trainer/features/factorizer_half_kp.h:52:38: error: constexpr function's return type 'std::string' (aka 'basic_string<char,
      char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_factorizers_string() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:8:
nnue/trainer/features/factorizer_half_ka.h:45:38: error: constexpr function's return type 'std::string' (aka 'basic_string<char,
      char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_name() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from nnue/trainer/features/all_factorizers.h:8:
nnue/trainer/features/factorizer_half_ka.h:49:38: error: constexpr function's return type 'std::string' (aka 'basic_string<char,
      char_traits<char>, allocator<char> >') is not a literal type
        static constexpr std::string get_factorizers_string() {
                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4333:64: note:
      'basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >' is not literal because it is not an aggregate
      and has no constexpr constructors other than copy or move constructors
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
                                                               ^
In file included from nnue/evaluate_nnue_learner.cpp:9:
nnue/trainer/trainer_feature_transformer.h:696:36: warning: variable length arrays are a C99 feature [-Wvla-extension]
            LearnFloatType weights_[kHalfDimensions * kInputDimensions];
                                   ^
nnue/trainer/trainer_feature_transformer.h:696:28: error: fields must have a constant size: 'variable length array in structure'
      extension will never be supported
            LearnFloatType weights_[kHalfDimensions * kInputDimensions];
                           ^
nnue/trainer/trainer_feature_transformer.h:705:40: error: non-type template argument is not a constant expression
        using BitsetType = LargeBitset<kInputDimensions>;
                                       ^
nnue/trainer/trainer_feature_transformer.h:706:9: error: unknown type name 'BitsetType'
        BitsetType observed_features;
        ^
nnue/trainer/trainer_feature_transformer.h:481:54: error: use of undeclared identifier 'BitsetType'
                                    (feature_index / BitsetType::best_concurrent_access_stride)
                                                     ^
nnue/evaluate_nnue_learner.cpp:73:51: error: no member named 'get_factorizers_string' in
      'Eval::NNUE::Features::Factorizer<Eval::NNUE::Features::FeatureSet<Eval::NNUE::Features::HalfKP<Eval::NNUE::Features::Side::kFriend>
      > >'
            << Features::Factorizer<RawFeatures>::get_factorizers_string() << std::endl;
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from ./nnue/trainer/features/all_factorizers.h:7:
nnue/trainer/features/factorizer_half_kp.h:34:44: error: definition of variable with array type needs an explicit size or an
      initializer
        static constexpr FeatureProperties kProperties[] = {
                                           ^
nnue/trainer/features/factorizer_half_kp.h:45:40: note: in instantiation of static data member
      'Eval::NNUE::Features::Factorizer<Eval::NNUE::Features::HalfKP<Eval::NNUE::Features::Side::kFriend> >::kProperties'
      requested here
        static_assert(get_array_length(kProperties) == kNumTrainingFeatureTypes, "");
                                       ^
nnue/trainer/features/factorizer_feature_set.h:94:20: note: in instantiation of template class
      'Eval::NNUE::Features::Factorizer<Eval::NNUE::Features::HalfKP<Eval::NNUE::Features::Side::kFriend> >' requested here
            return Factorizer<FeatureType>::get_dimensions();
                   ^
nnue/evaluate_nnue_learner.cpp:166:66: note: in instantiation of member function
      'Eval::NNUE::Features::Factorizer<Eval::NNUE::Features::FeatureSet<Eval::NNUE::Features::HalfKP<Eval::NNUE::Features::Side::kFriend>
      > >::get_dimensions' requested here
                static_assert(Features::Factorizer<RawFeatures>::get_dimensions() <
                                                                 ^
In file included from nnue/evaluate_nnue_learner.cpp:7:
In file included from ./nnue/trainer/features/all_factorizers.h:7:
nnue/trainer/features/factorizer_half_kp.h:45:23: error: no matching function for call to 'get_array_length'
        static_assert(get_array_length(kProperties) == kNumTrainingFeatureTypes, "");
                      ^~~~~~~~~~~~~~~~
nnue/trainer/features/factorizer_feature_set.h:94:20: note: in instantiation of template class
      'Eval::NNUE::Features::Factorizer<Eval::NNUE::Features::HalfKP<Eval::NNUE::Features::Side::kFriend> >' requested here
            return Factorizer<FeatureType>::get_dimensions();
                   ^
nnue/evaluate_nnue_learner.cpp:166:66: note: in instantiation of member function
      'Eval::NNUE::Features::Factorizer<Eval::NNUE::Features::FeatureSet<Eval::NNUE::Features::HalfKP<Eval::NNUE::Features::Side::kFriend>
      > >::get_dimensions' requested here
                static_assert(Features::Factorizer<RawFeatures>::get_dimensions() <
                                                                 ^
nnue/trainer/features/factorizer.h:111:27: note: candidate template ignored: could not match 'const T [N]' against
      'Eval::NNUE::Features::FeatureProperties const[]'
    constexpr std::size_t get_array_length(const T (&/*array*/)[N]) {
                          ^
nnue/evaluate_nnue_learner.cpp:166:31: error: static_assert expression is not an integral constant expression
                static_assert(Features::Factorizer<RawFeatures>::get_dimensions() <
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Apart from the above, there are also 2 warnings which might be helpful:

clang: warning: -lstdc++fs: 'linker' input unused [-Wunused-command-line-argument]
In file included from nnue/evaluate_nnue_learner.cpp:4:
In file included from nnue/evaluate_nnue.h:24:
In file included from nnue/nnue_feature_transformer.h:24:
nnue/nnue_common.h:30:36: warning: 'filesystem' is deprecated: std::experimental::filesystem has now been deprecated in favor of
      C++17's std::filesystem. Please stop using it and start using std::filesystem. This experimental version will be removed in
      LLVM 11. You can remove this warning by defining the _LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM macro.
      [-Wdeprecated-declarations]
namespace sys = std::experimental::filesystem;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions