Skip to content

Can't use sizeof... to initialize struct template members #151

@Ebola-Chan-bot

Description

@Ebola-Chan-bot
#include<stdint.h>
template<typename... Ts>
struct InfoArray {
  uint8_t Number = sizeof...(Ts);
};

The code above does not compile.

C:\Users\vhtmf\Documents\Arduino\sketch_nov5a\sketch_nov5a.ino:4:20: error: expected ';' at end of member declaration
   uint8_t Number = sizeof...(Ts);
                    ^
C:\Users\vhtmf\Documents\Arduino\sketch_nov5a\sketch_nov5a.ino:4:26: error: expected unqualified-id before '...' token
   uint8_t Number = sizeof...(Ts);
                          ^
C:\Users\vhtmf\Documents\Arduino\sketch_nov5a\sketch_nov5a.ino:4:20: error: expected primary-expression at end of input
   uint8_t Number = sizeof...(Ts);
                    ^

exit status 1

Compilation error: expected ';' at end of member declaration

Activity

christyogi

christyogi commented on Mar 3, 2025

@christyogi

Use constexpr static uint8_t Number = sizeof...(Ts);

Ebola-Chan-bot

Ebola-Chan-bot commented on Mar 3, 2025

@Ebola-Chan-bot
Author

Use constexpr static uint8_t Number = sizeof...(Ts);

Your code doesn't have the same meaning as mine. What I need must be a non-static member variable.

christyogi

christyogi commented on Mar 3, 2025

@christyogi

This maybe?

#include<stdint.h>
template<typename... Ts>
struct InfoArray {
  uint8_t Number;
  InfoArray() : Number{sizeof...(Ts)} {};
};
christyogi

christyogi commented on Mar 3, 2025

@christyogi

Just doing

  uint8_t Number = {sizeof...(Ts)};

seems fine in fact

Ebola-Chan-bot

Ebola-Chan-bot commented on Mar 3, 2025

@Ebola-Chan-bot
Author

Just doing

  uint8_t Number = {sizeof...(Ts)};

seems fine in fact

This is exactly what I did as a workaround.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Can't use sizeof... to initialize struct template members · Issue #151 · arduino/ArduinoCore-sam