Проблема в том, что вы привязываете ссылку к параметру, переданному по значению.Это должно быть незаконно, но, возможно, это не так.(Имеет ли параметр, передаваемый по значению, тот же статус, что и временный, и относится ли он также к примитивным типам?)
Какой это компилятор?
Как указывает SpaceCowboy, если ваш конструктор принимаетэталонный параметр это будет работать.Это должно сделать, это нормальный способ обернуть ссылку.Конечно, val будет недействительным, как только c выйдет из области видимости.