|
шаблонный класс с нешаблонным констуктором по умолчанию
|
|||
---|---|---|---|
#18+
Всем доброго времени суток. Есть шаблонный класс, у которого есть конструктор по умолчанию и мне нужно варьировать его поведение в зависимости от некоторых внешних факторов. Пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Поскольку нешаблонный параметр не является обязательным, простое использование конструктора по умолчанию автоматически определяет значение b. Например, Код: plaintext 1.
Я не понимаю как мне теперь создать экземпляр класса SomeClass с указанием параметра b = true. Код: plaintext 1.
Технически я мог бы применить решение с использованием тегирования, с автоопределением шаблонных аргументов средствами компилятора. Код: plaintext 1. 2. 3.
теперь я могу написать Код: plaintext 1.
но мне не подходит данное решение, так как в классе SomeClass есть и другие шаблонные конструкторы, которые могут принимать любые значения в составе конструкторов, при этом иметь собственную логику поведения, и в данном случае получается, что я теряю конструктор по умолчанию и создаю конструктор для 1 аргумента типа tag. Подобное не совсем красиво с точки зрения user experience и будет приводить в замешательство при использовании подобного класса: что еще за tag? что туда передавать? я просто хотел создать объект с конструктором по умолчанию! Нет ли какого-то другого способа вызывать конструктор по умолчанию с нешаблонным аргументом, при этом оставаясь в рамках стандартного подхода к самой "парадигме" конструктора по умолчанию. В идеале хотелось бы следующего или подобного: Код: plaintext 1. 2.
-------------------------------------------------------------- o(O_O)o ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 10:48 |
|
шаблонный класс с нешаблонным констуктором по умолчанию
|
|||
---|---|---|---|
#18+
похоже не получится https://stackoverflow.com/questions/35517095/constructors-templates-and-non-type-parameters ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 11:08 |
|
шаблонный класс с нешаблонным констуктором по умолчанию
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 15:57 |
|
шаблонный класс с нешаблонным констуктором по умолчанию
|
|||
---|---|---|---|
#18+
Ну или еще проще Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 15:58 |
|
шаблонный класс с нешаблонным констуктором по умолчанию
|
|||
---|---|---|---|
#18+
Можно ещё создать шаблонный статик метод в классе и вызывать его явно как SomeClass<int>::Create<true>() ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 21:15 |
|
шаблонный класс с нешаблонным констуктором по умолчанию
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, спасибо, но однозначно - нет SomeClass с true и SomeClass с false будут разными не совместимыми между собой типами. Мне это не нужно NekZ, примерно так и сделал ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 08:57 |
|
|
start [/forum/topic.php?fid=57&fpage=9&tid=2017472]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 263ms |
total: | 391ms |
0 / 0 |