When I should define operations-type-traits for a USTRUCT











up vote
1
down vote

favorite












For some USTRUCT structs within UnrealEngine, type traits TStructOpsTypeTraits<T> are defined. These provide a list of bools (encapsulated in an enumeration) about the implemented capabilities of struct T.




  1. What is the usage of those traits?

  2. When I should define those traits for my custom USTRUCTs within my project?




*Example usage from within the Engine:



struct TStructOpsTypeTraitsBase2
{
enum
{
WithZeroConstructor = false, // struct can be constructed as a valid object by filling its memory footprint with zeroes.
WithNoInitConstructor = false, // struct has a constructor which takes an EForceInit parameter which will force the constructor to perform initialization, where the default constructor performs 'uninitialization'.
WithNoDestructor = false, // struct will not have its destructor called when it is destroyed.
WithCopy = !TIsPODType<CPPSTRUCT>::Value, // struct can be copied via its copy assignment operator.
// ...
}
}


Which is used like



template<>
struct TStructOpsTypeTraits<FGameplayEffectContextHandle> : public TStructOpsTypeTraitsBase2<FGameplayEffectContextHandle>
{
enum
{
WithCopy = true, // Necessary so that TSharedPtr<FGameplayEffectContext> Data is copied around
WithNetSerializer = true,
WithIdenticalViaEquality = true,
};
};









share|improve this question


























    up vote
    1
    down vote

    favorite












    For some USTRUCT structs within UnrealEngine, type traits TStructOpsTypeTraits<T> are defined. These provide a list of bools (encapsulated in an enumeration) about the implemented capabilities of struct T.




    1. What is the usage of those traits?

    2. When I should define those traits for my custom USTRUCTs within my project?




    *Example usage from within the Engine:



    struct TStructOpsTypeTraitsBase2
    {
    enum
    {
    WithZeroConstructor = false, // struct can be constructed as a valid object by filling its memory footprint with zeroes.
    WithNoInitConstructor = false, // struct has a constructor which takes an EForceInit parameter which will force the constructor to perform initialization, where the default constructor performs 'uninitialization'.
    WithNoDestructor = false, // struct will not have its destructor called when it is destroyed.
    WithCopy = !TIsPODType<CPPSTRUCT>::Value, // struct can be copied via its copy assignment operator.
    // ...
    }
    }


    Which is used like



    template<>
    struct TStructOpsTypeTraits<FGameplayEffectContextHandle> : public TStructOpsTypeTraitsBase2<FGameplayEffectContextHandle>
    {
    enum
    {
    WithCopy = true, // Necessary so that TSharedPtr<FGameplayEffectContext> Data is copied around
    WithNetSerializer = true,
    WithIdenticalViaEquality = true,
    };
    };









    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      For some USTRUCT structs within UnrealEngine, type traits TStructOpsTypeTraits<T> are defined. These provide a list of bools (encapsulated in an enumeration) about the implemented capabilities of struct T.




      1. What is the usage of those traits?

      2. When I should define those traits for my custom USTRUCTs within my project?




      *Example usage from within the Engine:



      struct TStructOpsTypeTraitsBase2
      {
      enum
      {
      WithZeroConstructor = false, // struct can be constructed as a valid object by filling its memory footprint with zeroes.
      WithNoInitConstructor = false, // struct has a constructor which takes an EForceInit parameter which will force the constructor to perform initialization, where the default constructor performs 'uninitialization'.
      WithNoDestructor = false, // struct will not have its destructor called when it is destroyed.
      WithCopy = !TIsPODType<CPPSTRUCT>::Value, // struct can be copied via its copy assignment operator.
      // ...
      }
      }


      Which is used like



      template<>
      struct TStructOpsTypeTraits<FGameplayEffectContextHandle> : public TStructOpsTypeTraitsBase2<FGameplayEffectContextHandle>
      {
      enum
      {
      WithCopy = true, // Necessary so that TSharedPtr<FGameplayEffectContext> Data is copied around
      WithNetSerializer = true,
      WithIdenticalViaEquality = true,
      };
      };









      share|improve this question













      For some USTRUCT structs within UnrealEngine, type traits TStructOpsTypeTraits<T> are defined. These provide a list of bools (encapsulated in an enumeration) about the implemented capabilities of struct T.




      1. What is the usage of those traits?

      2. When I should define those traits for my custom USTRUCTs within my project?




      *Example usage from within the Engine:



      struct TStructOpsTypeTraitsBase2
      {
      enum
      {
      WithZeroConstructor = false, // struct can be constructed as a valid object by filling its memory footprint with zeroes.
      WithNoInitConstructor = false, // struct has a constructor which takes an EForceInit parameter which will force the constructor to perform initialization, where the default constructor performs 'uninitialization'.
      WithNoDestructor = false, // struct will not have its destructor called when it is destroyed.
      WithCopy = !TIsPODType<CPPSTRUCT>::Value, // struct can be copied via its copy assignment operator.
      // ...
      }
      }


      Which is used like



      template<>
      struct TStructOpsTypeTraits<FGameplayEffectContextHandle> : public TStructOpsTypeTraitsBase2<FGameplayEffectContextHandle>
      {
      enum
      {
      WithCopy = true, // Necessary so that TSharedPtr<FGameplayEffectContext> Data is copied around
      WithNetSerializer = true,
      WithIdenticalViaEquality = true,
      };
      };






      unreal-engine4






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 9 at 15:41









      Roi Danton

      1,75421829




      1,75421829





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53228877%2fwhen-i-should-define-operations-type-traits-for-a-ustruct%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53228877%2fwhen-i-should-define-operations-type-traits-for-a-ustruct%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Guess what letter conforming each word

          Port of Spain

          Run scheduled task as local user group (not BUILTIN)