Почему все конструкторы GLM являются явными?

Я начал использовать библиотеку GLM в своем коде. Выглядит неплохо, но я не могу делать такие вещи:

void foo (const glm :: vec3 & arg);

foo ({x, y, z});

потому что все конструкторы явные.

Меня это начинает чертовски раздражать. Я не могу придумать веской причины для запрета неявного построения таких простых типов значений. Авторы слепо следовали какому-то не относящемуся к делу изречению или они знают что-то, чего не знаю я?


person spraff    schedule 18.08.2013    source источник
comment
как насчет foo(glm::vec3(x, y, z)) или... может быть, этот синтаксис является причиной того, что они не делают другой явный синтаксис (??)   -  person mr5    schedule 18.08.2013
comment
Почему вы спрашиваете нас, а не создателя библиотеки?   -  person Nicol Bolas    schedule 21.08.2013


Ответы (1)


В новейшей версии он добавил C++11; см. изменения для 0.9.5.0 в README

https://github.com/g-truc/glm

и загрузите его на g-truc

http://glm.g-truc.net/

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

Кроме того, я согласен, что размещение пробелов вокруг :: делает разбор этой подписи немного сложным, по крайней мере, для моего мозга.

person Najati    schedule 05.01.2014