With user defined types, a temporary object then copy construction for the first *may* happen instead of in-place construction. Some compilers are smart enough to not do this, although it's not guaranteed by the standard to happen. Also, if there are non-explicit constructors, then automatic type conversion may occur.
The second guarantees that an object is always constructed instead of copy constructed, so technically, more efficient.