Класс boost::any
не имеет интерфейса, позволяющего что-то вроде этого: вам нужно будет указать тип ссылки с помощью конструктора. Я не думаю, что вы можете явно указать тип шаблонного конструктора, потому что я не вижу места, где вы могли бы его вставить. Даже если вы можете явно указать параметр шаблона, он не будет работать в C ++ 2003, потому что нет доступной свертки ссылок, и параметр объявлен как принимающий T const&
: вы пытаетесь создать T& const&
который не будет летать
Я думаю, что ваш лучший вариант - либо использовать std::reference_wrapper<T>
, если вы настаиваете на чем-то похожем на удаленную ссылку, либо просто использовать T*
.
Тем не менее, как правило, возможно иметь шаблонный метод статического фактора типа, подобного boost::any
, который будет использоваться для явного указания аргумента шаблона. Однако, поскольку boost::any
специально предназначен для работы с типами значений , это не сделано. Я немного сомневаюсь, нужно ли это делать также: использование указателя - отличная альтернатива. Если вам действительно нужен ссылочный тип, вам, вероятно, придется реализовать его самостоятельно.