2013-08-18 3 views
6

Я начал использовать библиотеку GLM в своем коде. Кажется довольно хорошим, но я не могу делать такие вещи:Почему конструкторы GLM являются явными?

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

foo ({x, y, z}); 

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

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

+1

Как насчет 'foo (glm :: vec3 (x, y, z))' или ... может быть, этот синтаксис является причиной того, что они не делают другого сильного синтаксиса (??) – mr5

+1

Почему вы спрашиваете * us * вместо создателя библиотеки? –

ответ

1

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

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

и загрузить его на г-Трюк

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^