id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 12920,movelib::unique_ptr: incorrect pointer type for nested array,mkuron,Ion Gaztañaga,"When attempting to use {{{boost::movelib::unique_ptr}}} to store an array of, for example, {{{double[2]}}}, the type of the contained pointer ends up being {{{double *}}} instead of {{{double (*)[2]}}}, resulting in conversion errors and the inability to use {{{boost::movelib::unique_ptr}}} for this purpose. {{{std::unique_ptr}}} behaves as expected, so evidently Boost's implementation does not fully match the standard one. It seems like {{{remove_extent}}} is used one too many times. Below is a short example: {{{ #include #include #include using boost::movelib::unique_ptr; typedef double C[2]; static_assert(std::is_same::pointer, C*>::value, ""Pointer types must match""); static_assert(std::is_same::element_type, C>::value, ""Element types must match""); int main() { unique_ptr > p1; unique_ptr p2; return 0; } }}} Replace line 5 with {{{using std::unique_ptr}}} to see that it works with the standard library's unique_ptr. Interestingly, as seen by the {{{static_assert}}}, only {{{pointer}}} has the wrong type; {{{element_type}}} is correct. Tested with Boost 1.59 and 1.63 with Xcode 8.2.1 on Mac OS X 10.12 and GCC 6 on Linux. ",Bugs,closed,To Be Determined,move,Boost 1.63.0,Problem,fixed,,