• David P. Sicilia's avatar
    [C++17] Add Traits class for Tables and Factory function within it. (#5678) · a5d9d0f7
    David P. Sicilia authored
    * Include flattests_cpp17 in unit tests when C++17 build is enabled.
    
    * [C++17] Generate generic table factory function.
    
    1. For each table, generate a convenient free-standing factory
       function that allows creating the table in a generic way by
       specifying only the type.  This is the first change in a series
       of changes to make Flatbuffers generated C++ code more friendly
       to code bases that make use of C++ template metaprogramming
       techniques to manage the serialization process.  Example:
    
         Before :(
    
           // The name of the Flatbuffers type (and namespace) must
           // be hard-coded when writing the factory function.
           auto monster = MyGame::Example::CreateMonster(fbb, ...);
    
         After  :)
    
           using type_to_create = MyGame::Example::Monster;
           // No namespace needed on CreateByTagType.
           auto monster = CreateByTagType((type_to_create*)nullptr,
                                          fbb, ...);
    
       This feature requires building with C++14 or greater, and thus
       it is guarded behind --cpp-std >= c++17 in the flatbuffers C++
       generator.
    
    2. Fix a CMake bug to include C++17 unit tests in test suite.
    
    * [C++17] Replace standalone variadic factory function with type_traits.
    
    Add a `type_traits` to each table class.  This `type_traits` can be
    populated with various compile-time info about the table.  Initially,
    we have the Create* function and type, but is extensible in the future.
    
    * Remove empty line and fix stale comments.
    
    * Rename type_traits to Traits and move fwd declaration.
    
    * Fix parameter evaluation order issue and use lambda for scope.
    a5d9d0f7
Name
Last commit
Last update
..
generated_cpp17 Loading commit data...
test_cpp17.cpp Loading commit data...