Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
17.02.2020, 10:48
|
|||
---|---|---|---|
шаблонный класс с нешаблонным констуктором по умолчанию |
|||
#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, 11:08
|
|||
---|---|---|---|
шаблонный класс с нешаблонным констуктором по умолчанию |
|||
#18+
похоже не получится https://stackoverflow.com/questions/35517095/constructors-templates-and-non-type-parameters ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.02.2020, 15:57
|
|||
---|---|---|---|
|
|||
шаблонный класс с нешаблонным констуктором по умолчанию |
|||
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.02.2020, 15:58
|
|||
---|---|---|---|
|
|||
шаблонный класс с нешаблонным констуктором по умолчанию |
|||
#18+
Ну или еще проще Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.02.2020, 21:15
|
|||
---|---|---|---|
шаблонный класс с нешаблонным констуктором по умолчанию |
|||
#18+
Можно ещё создать шаблонный статик метод в классе и вызывать его явно как SomeClass<int>::Create<true>() ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.02.2020, 08:57
|
|||
---|---|---|---|
шаблонный класс с нешаблонным констуктором по умолчанию |
|||
#18+
Anatoly Moskovsky, спасибо, но однозначно - нет SomeClass с true и SomeClass с false будут разными не совместимыми между собой типами. Мне это не нужно NekZ, примерно так и сделал ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=57&mobile=1&tid=2017472]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 285ms |
total: | 404ms |
0 / 0 |