LINUX.ORG.RU

Сообщения eagleivg

 

alsa, как настроить задержки по каналам для объемного звука?

Есть старенький ресивер, подключенный по оптике, который понимает старые кодеки 5.1. На самом ресивере задержки по каналам настраиваются, поэтому если фильм имеет звуковую дорожку в формате, понимаемом ресивером, всё прекрасно.

Однако, почти все новые фильмы закодированы в 6-ти канальный FLAC, или, прости, г-ди, в Dolby Atmos. Поэтому, звуковуха подключена тюльпанами к линейному многоканальному входу ресивера, в этом случае звук роутится не на алсовый iec958, а на surround51, декодирование осуществляется софтварно на компе.

Однако, в этом режиме ресивер игнорит все настроенные задержки и передает звук как есть! Что не очень хорошо, фазы плывут и звуковая картина рассыпается.

Что-то похожее нагуглил только для плагина upmix - там есть параметр delay, но он общий для всех каналов.

Как настроить поканальные задержки для pcm.surround51? Есть какой нибудь плагин? Или использовать LADSPA?

 , , ,

eagleivg ()

Выбивает из сессии при выходе из спящего

После апгрейда до 20.04 вознила проблема - при выходе из спящего режима и вводе пароля, через интервал от 0.5 до 10 секунд, происходит самопроизвольный запуск окна логина lightdm. После повторного логина все запущенные программы на месте, но задалбывает жутко.

Полез ковыряться в логи, похоже, что systemd гадит (08:34:12 - момент принудительного логина):

/var/log/auth.log

Sep 17 01:40:33 home su: (to eagleivg) root on none
Sep 17 01:40:33 home su: pam_unix(su-l:session): session opened for user eagleivg by (uid=0)
Sep 17 01:40:33 home su: pam_unix(su-l:session): session closed for user eagleivg
Sep 17 08:32:42 home su: (to eagleivg) root on none
Sep 17 08:32:42 home su: pam_unix(su-l:session): session opened for user eagleivg by (uid=0)
Sep 17 08:32:50 home lightdm: pam_unix(lightdm-greeter:session): session opened for user lightdm by (uid=0)
Sep 17 08:32:50 home systemd-logind[929]: New session c9 of user lightdm.
Sep 17 08:32:50 home systemd: pam_unix(systemd-user:session): session opened for user lightdm by (uid=0)
Sep 17 08:32:51 home lightdm: gkr-pam: gnome-keyring-daemon started properly
Sep 17 08:32:51 home lightdm: pam_succeed_if(lightdm:auth): requirement "user ingroup nopasswdlogin" not met by user "eagleivg"
Sep 17 08:32:51 home lightdm: pam_unix(lightdm:auth): Couldn't open /etc/securetty: No such file or directory
Sep 17 08:33:34 home lightdm: pam_unix(lightdm:auth): Couldn't open /etc/securetty: No such file or directory
Sep 17 08:33:34 home lightdm: gkr-pam: unable to locate daemon control file
Sep 17 08:33:34 home lightdm: gkr-pam: stashed password to try later in open session
Sep 17 08:33:35 home systemd-logind[929]: Removed session c9.
Sep 17 08:34:12 home systemd-logind[929]: Operation 'sleep' finished.
Sep 17 08:34:14 home lightdm: pam_unix(lightdm-greeter:session): session opened for user lightdm by (uid=0)
Sep 17 08:34:14 home systemd-logind[929]: New session c10 of user lightdm.
Sep 17 08:34:14 home systemd: pam_unix(systemd-user:session): session opened for user lightdm by (uid=0)
Sep 17 08:34:14 home lightdm: gkr-pam: gnome-keyring-daemon started properly
Sep 17 08:34:14 home lightdm: pam_succeed_if(lightdm:auth): requirement "user ingroup nopasswdlogin" not met by user "eagleivg"
Sep 17 08:34:14 home lightdm: pam_unix(lightdm:auth): Couldn't open /etc/securetty: No such file or directory
Sep 17 08:34:17 home lightdm: pam_unix(lightdm:auth): Couldn't open /etc/securetty: No such file or directory
Sep 17 08:34:17 home lightdm: gkr-pam: unable to locate daemon control file
Sep 17 08:34:17 home lightdm: gkr-pam: stashed password to try later in open session
Sep 17 08:34:17 home systemd-logind[929]: Removed session c10.
Sep 17 08:34:50 home su: pam_unix(su-l:session): session closed for user eagleivg
Sep 17 08:35:01 home CRON[9853]: pam_unix(cron:session): session opened for user eagleivg by (uid=0)
Sep 17 08:35:01 home CRON[9853]: pam_unix(cron:session): session closed for user eagleivg 

/var/log/syslog

Sep 17 08:33:45 home systemd[7094]: Closed Sound System.
Sep 17 08:33:45 home systemd[7094]: Reached target Shutdown.
Sep 17 08:33:45 home systemd[7094]: systemd-exit.service: Succeeded.
Sep 17 08:33:45 home systemd[7094]: Finished Exit the Session.
Sep 17 08:33:45 home systemd[7094]: Reached target Exit the Session.
Sep 17 08:33:45 home systemd[1]: user@104.service: Succeeded.
Sep 17 08:33:45 home systemd[1]: Stopped User Manager for UID 104.
Sep 17 08:33:45 home systemd[1]: Stopping User Runtime Directory /run/user/104...
Sep 17 08:33:45 home systemd[1]: run-user-104.mount: Succeeded.
Sep 17 08:33:45 home systemd[1325]: run-user-104.mount: Succeeded.
Sep 17 08:33:45 home systemd[1]: user-runtime-dir@104.service: Succeeded.
Sep 17 08:33:45 home systemd[1]: Stopped User Runtime Directory /run/user/104.
Sep 17 08:33:45 home systemd[1]: Removed slice User Slice of UID 104.
Sep 17 08:34:12 home systemd[1]: systemd-suspend.service: Succeeded.
Sep 17 08:34:12 home systemd[1]: Finished Suspend.
Sep 17 08:34:12 home systemd[1]: Stopped target Sleep.
Sep 17 08:34:12 home systemd[1]: Reached target Suspend.
Sep 17 08:34:12 home systemd[1]: Stopped target Suspend.
Sep 17 08:34:14 home systemd[1]: Created slice User Slice of UID 104.
Sep 17 08:34:14 home systemd[1]: Starting User Runtime Directory /run/user/104...
Sep 17 08:34:14 home systemd[1]: Finished User Runtime Directory /run/user/104.
Sep 17 08:34:14 home systemd[1]: Starting User Manager for UID 104...
Sep 17 08:34:14 home systemd[9648]: Reached target Paths.
Sep 17 08:34:14 home systemd[9648]: Reached target Timers.
Sep 17 08:34:14 home systemd[9648]: Starting D-Bus User Message Bus Socket.
Sep 17 08:34:14 home systemd[9648]: Listening on GnuPG network certificate management daemon.
Sep 17 08:34:14 home systemd[9648]: Listening on GnuPG cryptographic agent and passphrase cache (access for web browsers).
Sep 17 08:34:14 home systemd[9648]: Listening on GnuPG cryptographic agent and passphrase cache (restricted).
Sep 17 08:34:14 home systemd[9648]: Listening on GnuPG cryptographic agent (ssh-agent emulation).
Sep 17 08:34:14 home systemd[9648]: Listening on GnuPG cryptographic agent and passphrase cache.
Sep 17 08:34:14 home systemd[9648]: Listening on debconf communication socket.
Sep 17 08:34:14 home systemd[9648]: Listening on Sound System.
Sep 17 08:34:14 home systemd[9648]: Listening on D-Bus User Message Bus Socket.
Sep 17 08:34:14 home systemd[9648]: Reached target Sockets.
Sep 17 08:34:14 home systemd[9648]: Reached target Basic System.
Sep 17 08:34:14 home systemd[1]: Started User Manager for UID 104.
Sep 17 08:34:14 home systemd[9648]: Starting Sound Service...
Sep 17 08:34:14 home systemd[1]: Started Session c10 of user lightdm.

Что вообще происходит?

08:34:12 home systemd[1]: systemd-suspend.service: Succeeded

Это же по-идее переход в спящий, но какого этот таргет исполняется после выхода из спящего? И да, системд - зло.

 ,

eagleivg ()

Уменьшается емкость раздела на SSD

Сабж. Стала выскакивать уведомлялка, что кончается место на /home, ранее не обращал внимания, просто чистил от мусора и всё, но теперь заметил - место выжрано в ноль, но занято меньше емкости диска:

$ df -h
/dev/sdc3         81G          77G     0          100% /home

Более того, прибил почти весь софт, удалил ещё гигабайт - и с охренением наблюдал как он испарился:

$ df -h
/dev/sdc3         81G          76G     0          100% /home

Вывод SMART:

Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
  1 Raw_Read_Error_Rate     PO-R--   100   100   050    -    0
  9 Power_On_Hours          -O--C-   100   100   000    -    16615
 12 Power_Cycle_Count       -O--C-   100   100   000    -    9633
 17 Unknown_Attribute       -O--C-   100   100   000    -    54
168 SATA_Phy_Error_Count    -O--C-   100   100   000    -    6
170 Bad_Blk_Ct_Erl/Lat      PO----   100   100   010    -    0/255
173 MaxAvgErase_Ct          -O--C-   100   100   000    -    576 (Average 220)
192 Unsafe_Shutdown_Count   -O--C-   100   100   000    -    487
194 Temperature_Celsius     PO---K   070   070   030    -    30 (Min/Max 29/30)
218 CRC_Error_Count         PO-R--   100   100   050    -    3
231 SSD_Life_Left           PO--C-   100   100   000    -    93
233 Flash_Writes_GiB        PO-R--   100   100   000    -    79025
241 Lifetime_Writes_GiB     -O--C-   100   100   000    -    10298

Device Statistics (GP Log 0x04)
Page  Offset Size        Value Flags Description
0x01  =====  =               =  ===  == General Statistics (rev 2) ==
0x01  0x008  4            9633  ---  Lifetime Power-On Resets
0x01  0x018  6     21598282234  ---  Logical Sectors Written
0x01  0x020  6       130444916  ---  Number of Write Commands
0x01  0x028  6     19760364680  ---  Logical Sectors Read
0x01  0x030  6       357862452  ---  Number of Read Commands
0x04  =====  =               =  ===  == General Errors Statistics (rev 1) ==
0x04  0x008  4              22  ---  Number of Reported Uncorrectable Errors
0x04  0x010  4               0  ---  Resets Between Cmd Acceptance and Completion
0x05  =====  =               =  ===  == Temperature Statistics (rev 1) ==
0x05  0x008  1              32  ---  Current Temperature
0x05  0x010  1              32  ---  Average Short Term Temperature
0x05  0x018  1              32  ---  Average Long Term Temperature
0x05  0x020  1              50  ---  Highest Temperature
0x05  0x028  1               5  ---  Lowest Temperature
0x05  0x030  1              50  ---  Highest Average Short Term Temperature
0x05  0x038  1              16  ---  Lowest Average Short Term Temperature
0x05  0x040  1              50  ---  Highest Average Long Term Temperature
0x05  0x048  1              16  ---  Lowest Average Long Term Temperature
0x05  0x050  4               0  ---  Time in Over-Temperature
0x05  0x058  1              50  ---  Specified Maximum Operating Temperature
0x05  0x060  4               0  ---  Time in Under-Temperature
0x05  0x068  1               5  ---  Specified Minimum Operating Temperature
0x06  =====  =               =  ===  == Transport Statistics (rev 1) ==
0x06  0x008  4         2588008  ---  Number of Hardware Resets
0x06  0x018  4               3  ---  Number of Interface CRC Errors
0x07  =====  =               =  ===  == Solid State Device Statistics (rev 1) ==
0x07  0x008  1               5  ---  Percentage Used Endurance Indicator

Это какие-то ssd-шные приколы? Запускал fstrim, он оттримал 4 гига, но место так и не появилось. Что вообще происходит?

 

eagleivg ()

Ну вот и началось

Киберпанк заказывали? Получите, распишитесь:

Управление по санитарному надзору за качеством пищевых продуктов и медикаментов США (FDA) выдало компании Synchron первое в истории США разрешение на тестирование интерфейса мозг-компьютер на пациентах-людях. Нью-Йоркский стартап получил соответствующий сертификат и теперь планирует проверить свою технологию на шести пациентах в больнице Mount Sinai. В ходе тестов Synchron оценит безопасность и эффективность своего устройства для пациентов с тяжелым параличом.

Для не Ъ

 

eagleivg ()

xfce4 тормозит Xorg

Симптомы такие, после логина минут через 5 начинает тормозить интерфейс. Точнее, откликаться с задержкой, и чем дальше, тем больше задержка. Такое ощущение, что input очередь команд иксов тормозит. Курсор мыши двигается без задержек, но реакция на события (клик по кнопке, смена фокуса, нажатие клавиш) запаздывает.

Сталкивался ли кто с таким?

Из подозрительного, нашел в Xorg.0.log ежесекундные срабатывания чтения EDID

[  2889.373] (II) RADEON(0): EDID vendor "LGD", prod id 488
[  2889.373] (II) RADEON(0): Printing DDC gathered Modelines:
[  2889.373] (II) RADEON(0): Modeline "1366x768"x0.0   72.30  1366 1414 1446 1526  768 771 776 790 -hsync -vsync (47.4 kHz eP)
[  2890.384] (II) RADEON(0): EDID vendor "LGD", prod id 488
[  2890.384] (II) RADEON(0): Printing DDC gathered Modelines:
[  2890.384] (II) RADEON(0): Modeline "1366x768"x0.0   72.30  1366 1414 1446 1526  768 771 776 790 -hsync -vsync (47.4 kHz eP)
[  2891.388] (II) RADEON(0): EDID vendor "LGD", prod id 488
[  2891.388] (II) RADEON(0): Printing DDC gathered Modelines:
[  2891.388] (II) RADEON(0): Modeline "1366x768"x0.0   72.30  1366 1414 1446 1526  768 771 776 790 -hsync -vsync (47.4 kHz eP)

Смущает Modeline "1366x768"x0.0 , хотя в этом же логе чуть ранее:

[  1537.365] (II) RADEON(0): EDID (in hex):
[  1537.365] (II) RADEON(0):    00ffffffffffff0030e4e80100000000
[  1537.365] (II) RADEON(0):    00120103802213780a4e859e5b559526
[  1537.365] (II) RADEON(0):    1a505400000001010101010101010101
[  1537.365] (II) RADEON(0):    0101010101013e1c56a0500016303020
[  1537.365] (II) RADEON(0):    350058c2100000190000000000000000
[  1537.365] (II) RADEON(0):    00000000000000000000000000fe004c
[  1537.365] (II) RADEON(0):    4720446973706c61790a2020000000fe
[  1537.365] (II) RADEON(0):    004c503135365748322d544c4131004d
[  1537.365] (II) RADEON(0): Printing probed modes for output LVDS
[  1537.365] (II) RADEON(0): Modeline "1366x768"x60.0   72.30  1366 1414 1446 1526  768 771 776 790 -hsync -vsync (47.4 kHz eP)
[  1537.365] (II) RADEON(0): Modeline "1280x720"x60.0   74.65  1280 1344 1472 1664  720 723 728 748 -hsync +vsync (44.9 kHz)
[  1537.365] (II) RADEON(0): Modeline "1152x768"x59.9   71.95  1152 1216 1328 1504  768 771 781 798 -hsync +vsync (47.8 kHz)
[  1537.365] (II) RADEON(0): Modeline "1024x768"x59.9   63.53  1024 1072 1176 1328  768 771 775 798 -hsync +vsync (47.8 kHz)
[  1537.365] (II) RADEON(0): Modeline "800x600"x60.0   38.31  800 832 912 1024  600 603 607 624 -hsync +vsync (37.4 kHz)
[  1537.365] (II) RADEON(0): Modeline "848x480"x59.9   31.65  848 872 952 1056  480 483 493 500 -hsync +vsync (30.0 kHz)
[  1537.365] (II) RADEON(0): Modeline "720x480"x59.9   26.85  720 744 808 896  480 483 493 500 -hsync +vsync (30.0 kHz)
[  1537.365] (II) RADEON(0): Modeline "640x480"x59.9   23.98  640 664 720 800  480 483 487 500 -hsync +vsync (30.0 kHz)

Видеокарта такая: 00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Sumo [Radeon HD 6620G]

Сталкивался ли кто-нибудь с подобным? Или я вообще не в ту сторону смотрю?

 ,

eagleivg ()

Куда пропал cpuburn и кто теперь вместо него?

Обновил убунту до 20.04. Хотел прогнать burnP6 - а больше нет его в репах. Не, собрать из исходников не вопрос, просто интересно, его просто так выкинули, или что-то на замену добавили, просто оно не на слуху пока?

 , ,

eagleivg ()

Поведение многопоточной программы под отладчиком

Подскажите, какие есть особенности при работе под отладчиком. Пытаюсь выносить некоторые вычисления во второй поток - падает. Лезу gdb посмотреть (без бряков, просто по стеку полазить когда упадёт) - вуаля! Работает! Как так? gdb как-то синхронизирует потоки?

 ,

eagleivg ()

Линкер валится при попытке собрать статическую библиотеку.

Собственно, сабж:

/usr/bin/ld.gold: internal error in open, at ../../gold/descriptors.cc:98
collect2: error: ld returned 1 exit status

Начал вылазить, когда я начитался советов по оптимизации, и попробовал собрать весь проект со статической линковкой. Собрать-то собрал, но он начал падать, причем отладчик стек не показывает(!?!?) (собирал с дебагинфо)

Решил добавить санитайзеров, и получил сабж. Подозреваю, дело в объеме, размер объектников либы 6 Гб, весь проект - 11 Гб

Куда копать-то?

 , ,

eagleivg ()

Microsoft решила защитить Windows 10 на уровне компьютеров Apple (Или новая инкарнация SecureBoot)

Проект «ПК с защищённым ядром» ведётся в сотрудничестве с производителями

Компания Microsoft представила новую инициативу под названием Secured-core PC (ПК с защищённым ядром). Проект нацелен на создание ПК, защищённых от атак на уровне прошивки. Добиться этого планируется благодаря «глубокому взаимодействию» аппаратных и программных компонентов и использованию «самых современных» процессоров.

Для этого заключаются договоры с производителями ПК, а также производителями процессоров, включая Intel, AMD и Qualcomm. В результате, безопасные ключи шифрования будут «прошиты» в процессорах ещё на этапе производства.

Поскольку это не только программное, но и аппаратное решение, владельцы «старых» компьютеров не смогут скачать такое обновление. Одним из первых «ПК с защищённым ядром» станет новый планшет Surface Pro X, представленный 2 октября, а затем появятся устройства производства Dell, Lenovo и Panasonic.

https://www.ixbt.com/news/2019/10/22/microsoft-windows-10-apple.html

 , ,

eagleivg ()

Куда пропал oolite?

Бубунта 18.04 - нет oolite в репах. Я что-то пропустил, почему его выкинули?

 ,

eagleivg ()

Big Blizzard is Watching You!

Похоже, виндовая версия овервотча умеет определять, что она запущена в вайне: https://www.reddit.com/r/linux_gaming/comments/bbdfsd/til_that_blizzard_knows...

 ,

eagleivg ()

Общение с анонимусами

При общении в треде с числом анонимусов более 2-х, становится трудно отслеживать, кому же ты отвечаешь. Прошу добавить нумерацию анонимусов.

 

eagleivg ()

Линуксокапец

https://www.dsogaming.com/news/tim-sweeney-founder-of-epic-games-comments-cur...

Есть интересное высказывание Tim Sweeney, основателя Epic Games:
«... Я понимаю, что вам могут не нравиться эксклюзивы магазинов, но это другой вопрос, который не связан с проблемой закрытия платформ вроде Windows с целью монополизировать дистрибуцию, как это происходит на iOS. Microsoft пыталась создать закрытые версии Windows с помощью UWP, но ничего не получилось. Причём сторонники этой идей ушли, а их места заняли замечательные лидеры вроде Сатья Наделлы и Фила Спенсера, которые ведут Windows вперёд как открытую платформу», - сказал Суини.

Это что же получается, Стим для линукса сделал свое дело?

Правда, валвы продолжают пилить именно линукс как платформу (пусть и через протон), видимо это требует от них меньше усилий, чем тянуть за уши геймдев на линукс.

Но вот нужен ли он будет теперь? Не дропнут ли краны его поддержку, ибо мавр свое сделал?

 ,

eagleivg ()

Не было печалей - апдейтов накачали

https://www.theverge.com/2019/1/31/18205774/nio-ota-update-traffic-china-es8
Для не умеющих в англицкий - клиенты на тест-драйве китайского электромобиля Nio ES8 тыркнули на экране установку обновлений, машина на оживленной магистрали отрубилась полностью на час, ни дверей открыть, ни даже стекол опустить.

 ,

eagleivg ()

S.T.A.L.K.E.R. Зов припяти завезли в линукс

Свершилось, теперь ЗП запускается под линуксом. Собирать отсюда:
https://github.com/OpenXRay/xray-16
Инструкция по сборке там же, инстукция по запуску в вики.

Нужны тестеры и баг-репорты.

Сразу предупреждаю, с лицензией есть засада, сорцы несвободны, но открыты для некоммерческого использования.

 ,

eagleivg ()

C++ и аллокаторы std::vector

Нужен направляющий пинок. Имеется вектор, с переопределенным аллокатором tbb::tbb_allocator. Переопределены операторы new и delete на использование scalable_malloc/free из того же tbb. И со всем этим добром творится непонятная хрень: push_back в этот вектор приводит к сегфолту, но не всегда, и каждый раз в разных местах. Подозреваю, что есть некая гонка в разных потоках, но понять где именно, не могу. Минимальный пример для воспроизведения тоже не смог сделать - 1М элементов в 8 потоков прекрасно добавились и ни разу не упали. Подскажите, куда еще можно копать, у меня идеи кончились вообще, а понимание происходящего кончилось еще раньше.

 ,

eagleivg ()

Чудесный код С++

Хотите поржать?

BOOL ShaderElement::equal(ShaderElement* S)
{
    if (nullptr == S && nullptr == this)
        return TRUE;
    if (nullptr == S || nullptr == this)
        return FALSE;
    return equal(*S);
}
Как вы думаете, для чего оно?

( читать дальше... )

 

eagleivg ()

использование using и возвращаемые типы

Есть 2 класса: B.h:

#pragma once

class B
{
public:
	B();
	virtual ~B();
};
и A.h, в котором класс B используется как поле.
#pragma once

#include "B.h"

class A
{
public:
	using bns = B; // И вот если мы обявим его через using, то начинаются чудеса
private:
	bns* m_Bclass;
public:
	A();
	virtual ~A();

	bns* get_b();
	void set_b(bns* b);
};
И собственно A.cpp
#include "A.h"

A::A()
{
	m_Bclass = nullptr;
}

A::~A()
{
}

void A::set_b(bns* b) // тут всё нормально
{
	m_Bclass = b;
}

bns* A::get_b() // а тут error: ‘bns’ does not name a type
{
	return m_Bclass;
}
Я понимаю, что чего-то не понимаю. Почему публично обявленный через using тип можно принимать, но нельзя возвращать?

 

eagleivg ()

Будь проклят тот день #3 [С++ template hell]

Снова MSVC против g++ :

template <typename TIndex>
struct CVertexManagerFixed
{
    template <typename TPathBuilder, typename TCompoundVertex>
    class CDataStorage : public TPathBuilder::template CDataStorage<TCompoundVertex>
    {
    public:
        using CDataStorageBase = typename TPathBuilder::template CDataStorage<TCompoundVertex>;
        using Vertex = TCompoundVertex;
        using Index = TIndex;

    public:
        inline CDataStorage(const u32 vertex_count);
        inline virtual ~CDataStorage();
        inline Vertex& get_node(const Index& vertex_id) const;
    };
};


#define TEMPLATE_SPECIALIZATION                           \
    template <typename TIndex> \
    template <typename TPathBuilder, typename TCompoundVertex>

#define CFixedVertexManager \
    CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>

TEMPLATE_SPECIALIZATION
inline CFixedVertexManager::CDataStorage(const u32 vertex_count)
    : CDataStorageBase(vertex_count)
{
}

TEMPLATE_SPECIALIZATION
inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
{
    VERIFY(vertex_id < m_max_node_count);
    VERIFY(is_visited(vertex_id));
    return *m_indexes[vertex_id].m_vertex;
}

Лог ошибок:

../src/test_cpp.cpp:54:34: error: non-template ‘CDataStorage’ used as template
     CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>
                                  ^
../src/test_cpp.cpp:63:17: note: in expansion of macro ‘CFixedVertexManager’
 inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
                 ^
../src/test_cpp.cpp:54:34: note: use ‘CVertexManagerFixed<TIndex>::template CDataStorage’ to indicate that it is a template
     CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>
                                  ^
../src/test_cpp.cpp:63:17: note: in expansion of macro ‘CFixedVertexManager’
 inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
                 ^
../src/test_cpp.cpp:54:59: error: expected unqualified-id before ‘,’ token
     CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>
                                                           ^
../src/test_cpp.cpp:63:46: note: in expansion of macro ‘CFixedVertexManager’
 inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
Я не понимаю, почему объявление возвращаемого типа метода get_node дает такую ошибку. Ведь CDataStorage - это только шаблон, нигде как класс он не объявлен?

 ,

eagleivg ()

Будь проклят тот день #2 [С++ template hell]

Снова код с винды:

template <typename _param, //  shadows template parm ‘class _param’
    typename _param_ptr = _param*> // shadows template parm ‘class _param_ptr’
class CTest
{
public:
    typedef _param CParam;

    struct STest
    {
    	_param_ptr m_operator;

        inline STest(_param_ptr _param) // declaration of ‘_param_ptr _param’
            : m_operator(_param)
        {
        }
    };
};

Как я понимаю, основная засада в инлайновом методе внутри структуры - он воспринимается как новое объявление класса. Как же тогда передать туда параметр шаблона?

 ,

eagleivg ()

RSS подписка на новые темы