Форум
C/C++
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, Кодт, Вы писали: К>Здравствуйте, niXman, Вы писали: X>>в первой строке ты наследуешь конкретный with_allocator_base. но во второй строке ты определяешь тип base, который, возможно специализируется по другому условию, ибо: 'is_constructible_from<T,A>::value' и 'has_constructor<T,A>::value' - разные шаблоны. или тут опечатка? К>Опечатка, конечно. Я же испытывал на кошках - набросал эскиз в нотепаде и скомпилировал 2010 студией. После чего вспомнил, что велосипедирую, в 11 стандарте уже есть нужная метафункция, и переписал... но недопереписал :) X>>и то, что ты выполняешь во второй и третьей строке, насколько я понимаю, можно заменить так?: X>>using with_allocator_base<T,A, has_constructor<T,A>::value>with_allocator_base; К>Да. Потому что у меня основной компилятор - это VS2010, а С++11 это для души, и редкоиспользуемые фичи я не всегда вспоминаю; зато очень быстро печатаю десятью пальцами :)) К>На самом деле, всё проще: надо протащить SFINAE в конструкторЫ обёртки К>[c] К>template<class T> struct with_allocator К>{ К> struct unspecified_type; // от греха подальше: чтобы никто не передавал второй параметр в конструктор К> T var; К> T& operator*() { return var; } К> T const& operator*() { return var; } К> template<class A> К> explicit with_allocator(A& a, К> typename enable_if< is_constructible<T,A&>::value, unspecified_type* >::type _ = nullptr) К> : var(a) К> {} К> template<class A> К> explicit with_allocator(A& a, К> typename enable_if<!is_constructible<T,A&>::value, unspecified_type* >::type _ = nullptr) К> {} К>}; К>[/c] К>http://ideone.com/8fwXl9
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …