0xd34df00d 26.10.2012 11:10 Aedalus

Во-первых, шланг няша и парсит-ругается даже на тела темплейтных функций, которые никогда не были инстанциированы. Это год.

Что не гуд — это сами плюсы. Пытаюсь написать темплейтную структуру, рекурсивно идущую по std::tuple и выполняющую данный функтор для каждого элемента, и обламываюсь:
non-type template argument depends on a template parameter of the partial specialization

:(

Recommended by:

@pooq: моча съела говно

1. generatorglukoff 26.10.2012 11:11 Воркота

гцц тоже уже умеет
покажи кот

2. 0xd34df00dgeneratorglukoff /1 26.10.2012 11:11 Aedalus

4.6 не ругнулся.
http://bpaste.net/show/MYQ9jmj8IWLdl7Wmf...

3. DZhon 26.10.2012 11:12 STARGATE

>Во-первых, шланг няша и парсит-ругается даже на тела темплейтных функций, которые никогда не были инстанциированы.
SFINAE ?

4. 0xd34df00dDZhon /3 26.10.2012 11:12 Aedalus

Нет.

5. DZhon0xd34df00d /4 26.10.2012 11:13 STARGATE

Что нет? Он же будет пиздеть на все enable_if по такой логике.

6. 0xd34df00dDZhon /5 26.10.2012 11:14 Aedalus

Для корректной работы SFINAE нужен хотя бы один незафейленный сабститюшен, очевидно.

7. 0xd34df00d0xd34df00d /6 26.10.2012 11:14 Aedalus

(что не тот случай при отсутствии специализаций, например)

8. generatorglukoff0xd34df00d /2 26.10.2012 11:14 Воркота

запускай не от нуля до tuple_size<>, а наоборот

9. 0xd34df00dgeneratorglukoff /8 26.10.2012 11:15 Aedalus

Слишком скучно. Хочется сделать так.

10. DZhon0xd34df00d /6 26.10.2012 11:15 STARGATE

Спасибо, кэп. Но ведь зафейленный сабститьюшн не инстациирован, а ты пишешь, что неинстациированные тоже проверяются. Или не ?

11. generatorglukoffgeneratorglukoff /8 26.10.2012 11:16 Воркота

тобишь ты пишешь специализацию когда pos = 0, и оно не будет зависеть
если тебе нужно обрабатывать именно в этом порядке, просто сделай вычитание tuple_size — i

12. 0xd34df00dDZhon /10 26.10.2012 11:16 Aedalus

Ок, я некорректно написал.

У меня в хедере есть некий ТЕМПЛЕЙТ, пока нигде не используемый. Вон шланг его парсит и проверяет, а гцц — нет.

13. 0xd34df00dgeneratorglukoff /11 26.10.2012 11:16 Aedalus

Вопрос не в этом, а в том, схуябы так.

14. DZhon0xd34df00d /12 26.10.2012 11:16 STARGATE

а, ок

15. generatorglukoff0xd34df00d /13 26.10.2012 11:19 Воркота

lmgfy
ISO C++03 14.5.4/9 says

A partially specialized non-type argument expression shall not involve a template parameter of the partial specialization except when the argument expression is a simple identifier.

16. generatorglukoffgeneratorglukoff /15 26.10.2012 11:19 Воркота

алсо погугли про C++11

17. 0xd34df00dgeneratorglukoff /16 26.10.2012 11:20 Aedalus

Это в 11-режиме. std::tuple же, блядь.

18. 0xd34df00dgeneratorglukoff /15 26.10.2012 11:20 Aedalus

Пиздец.
Я умею читать сообщение об ошибке. Вопрос в том, почему так сделали и почему это нелегально?

19. generatorglukoff0xd34df00d /18 26.10.2012 11:27 Воркота

гуглить надо же
скорее всего ломает логику где-то

20. generatorglukoff0xd34df00d /18 26.10.2012 11:31 Воркота

хотя в данном конкретном случае ты можешь передать стоп значение как отдельный аргумент темплейта и завернуть это всё в другой темплейт

21. 0xd34df00dgeneratorglukoff /20 26.10.2012 11:33 Aedalus

ЕХАЛ ТЕМПЛЕЙТ ЧЕРЕЗ ТЕМПЛЕЙТ

22. generatorglukoff0xd34df00d /21 26.10.2012 11:33 Воркота

а у тебя щаз и так, ехал аргумент темплейта через аргумент

23. 0xd34df00dgeneratorglukoff /22 26.10.2012 11:34 Aedalus

Следующий пост будет еще круче, stay tuned.

Do you really want to delete ?