Consider the code:
#include <memory>
template <class T, class Deleter = std::default_delete<T>>
class unique_ptr_wrapper: public std::unique_ptr<T, Deleter>
{
public:
using typename std::unique_ptr<T, Deleter>::unique_ptr;
operator T* () const {return this->get();}
};
int main()
{
unique_ptr_wrapper<int> upw{new int{42}};
}
g++5.1 compiles it fine, although clang++ complains
error: typename is allowed for identifiers only
I agree that we don't have an identifier here, so probably typename
is not required. But is it actually forbidden? Is the compiler required to at least emit a diagnostic?
Aucun commentaire:
Enregistrer un commentaire